Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

russian_central_bank

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

russian_central_bank

  • 1.1.3
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Build Status License

RussianCentralBank

This gem provides access to the Central Bank of Russia currency exchange. It can be used as a standalone exchange rates parser and also extends Money::Bank::VariableExchange with Money::Bank::RussianCentralBank

Installation

Add this line to your application's Gemfile:

gem 'russian_central_bank'

And then execute:

$ bundle

Or install it yourself as:

$ gem install russian_central_bank

NOTE: use 0.x version of russian_central_bank for money versions < 6.0

Dependencies

Usage

Standalone currency rates provider

require 'russian_central_bank'

# Today rates
Money::Bank::RussianCentralBankFetcher.new.perform()
# => [{:code=>"USD", :nominal=>1, :value=>65.1639}, ...]

# For any other date
Money::Bank::RussianCentralBankFetcher.new.perform(Date.new(2010, 12, 31))
# => [{:code=>"USD", :nominal=>1, :value=>30.4769}, ...]

Regular usage (with money gem)

require 'russian_central_bank'

Money.locale_backend = :currency
bank = Money::Bank::RussianCentralBank.new

Money.default_bank = bank

# Load today's rates
bank.update_rates

# Exchange 1000 USD to RUB
Money.new(1000_00, "USD").exchange_to('RUB').format  # => 64.592,50 ₽

# Use indirect exchange rates, USD -> RUB -> EUR
Money.new(1000_00, "USD").exchange_to('EUR').format  # => €888,26

Specific date rates

# Specify rates date
bank.update_rates(Date.new(2010, 12, 31))
Money.new(1000_00, "USD").exchange_to('RUB').format  # => 30.476,90 ₽

# Check last rates update
bank.rates_updated_at

# Check on which date rates were updated
bank.rates_updated_on

Autoupdate

# Use ttl attribute to enable rates autoupdate
bank.ttl = 1.day

# Check expiration date
bank.rates_expired_at

Safe rates fetch

There are some cases, when the cbr.ru doesn't return HTTP 200. To avoid issues in production, you use fallback:

bank = Money::Bank::RussianCentralBank.new
begin
  bank.update_rates
rescue Money::Bank::RussianCentralBankFetcher::FetchError => e
  Rails.logger.info "CBR failed: #{e.response}"

  ## fallback
  Money.default_bank = Money::Bank::VariableExchange.new

  Money.default_bank.add_rate(:usd, :eur, 1.3)
  Money.default_bank.add_rate(:eur, :usd, 0.7)
end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

FAQs

Package last updated on 08 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc