Sha256: 70fe2ce4ba268ab47f5e2e75f50153790b344864c3658bb8f9f85f998ec75167

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

module CurrencyRate
  class FixerAdapter < FiatAdapter

    FETCH_URL = {
      "eur" => "http://api.fixer.io/latest?base=eur",
      "usd" => "http://api.fixer.io/latest?base=usd"
    }
    SUPPORTED_CURRENCIES = %w(USD EUR)

    def currency_pair_rate(currency1, currency2)
      rates = @rates[currency1.downcase] || @rates[currency2.downcase]
      raise CurrencyNotSupported unless rates
      rate = rates["rates"][currency1] || rates["rates"][currency2]
      raise CurrencyNotSupported unless rate
      BigDecimal.new(rate.to_s).round(self.class::DECIMAL_PRECISION)
    end

    def invert_rate(from,to,rate)
      if SUPPORTED_CURRENCIES.include?(to)
        _invert_rate(rate)
      else
        rate
      end
    end

    def supported_currency_pairs
      cache_supported_currency_pairs do
        @rates.each do |base_name, content|
          currency1 = content["base"]
          content["rates"].each do |currency2, rate|
            @supported_currency_pairs << "#{currency1}/#{currency2}"
          end
        end
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
currency-rate-0.4.1 lib/fiat_adapters/fixer_adapter.rb
currency-rate-0.4.0 lib/fiat_adapters/fixer_adapter.rb
currency-rate-0.3.9 lib/fiat_adapters/fixer_adapter.rb