Sha256: ee888bfd37d5427b2c54df3cea233365491969ea753238973813124c29028dd1

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

# encoding: UTF-8
require 'money'
require 'date'
require 'yajl'
require 'open-uri'

class Money
  module Bank
    module OpenExchangeRatesLoader
      HIST_URL = 'https://raw.github.com/currencybot/open-exchange-rates/master/historical/'
      OER_URL = 'https://raw.github.com/currencybot/open-exchange-rates/master/latest.json'

      # Tries to load data from OpenExchangeRates for the given rate.
      # Won't do anything if there's no data available for that date
      # in OpenExchangeRates (short) history.
      def load_data(date)
        rates_source = if date == Date.today
                         OER_URL
                       else
                         # Should we use strftime, does to_s have better performance ? Or is it localized accross systems ?
                         HIST_URL + date.to_s + '.json'
                       end
        doc = Yajl::Parser.parse(open(rates_source).read)

        base_currency = doc['base'] || 'USD'

        doc['rates'].each do |currency, rate|
          # Don't use set_rate here, since this method can only be called from
          # get_rate, which already aquired a mutex.
          internal_set_rate(date, base_currency, currency, rate)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
money-historical-bank-0.0.2 lib/money/bank/open_exchange_rates_loader.rb