Class: ExchangeRate::RatesDataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/exchange_rate/rates_data_source.rb

Instance Method Summary collapse

Instance Method Details

#currency_namesObject



16
17
18
# File 'lib/exchange_rate/rates_data_source.rb', line 16

def currency_names
  @currency_names ||= parsed_rates.css("[currency]").map(&:first).map(&:last).uniq
end

#find_rate_by_date_and_currency(date, currency_symbol) ⇒ Object

Raises:



7
8
9
10
11
12
13
14
# File 'lib/exchange_rate/rates_data_source.rb', line 7

def find_rate_by_date_and_currency(date, currency_symbol)
  rates_for_date = find_rates_by_date(date)
  currency_rate = rates_for_date.at_css("[currency='#{currency_symbol}']")

  raise CurrencyNotFound if currency_rate.nil?

  currency_rate.values.last
end

#find_rates_by_date(date) ⇒ Object

Raises:



20
21
22
23
24
# File 'lib/exchange_rate/rates_data_source.rb', line 20

def find_rates_by_date(date)
  rates_for_date = parsed_rates.css("[time='#{date.to_s}']")
  raise NoRateForGivenDate if rates_for_date.size == 0
  rates_for_date
end

#parsed_ratesObject



26
27
28
# File 'lib/exchange_rate/rates_data_source.rb', line 26

def parsed_rates
  @parsed_rates = Nokogiri::XML(raw_xml_rates)
end