class Fxify::ECBData
Constants
- ECB_90_DAYS_URL
Public Class Methods
new()
click to toggle source
# File lib/fxify/base_class.rb, line 7 def initialize @days = [] fetch_data("data.xml") @data_file = Nokogiri::XML File.open("data.xml") parse_xml end
Public Instance Methods
currencies()
click to toggle source
# File lib/fxify/base_class.rb, line 14 def currencies @days.first.currencies.map { |c| c.name } end
dates()
click to toggle source
# File lib/fxify/base_class.rb, line 18 def dates @days.map { |d| d.day } end
Private Instance Methods
fetch_data(file_name)
click to toggle source
# File lib/fxify/base_class.rb, line 40 def fetch_data(file_name) begin remote_data = open(ECB_90_DAYS_URL).read rescue OpenURI::HTTPError => e puts "Error #{e}" end File.open(file_name, 'w') { |file| file.write(remote_data) } if e.nil? end
parse_xml()
click to toggle source
# File lib/fxify/base_class.rb, line 28 def parse_xml @data_file.xpath("//xmlns:Cube").each do |day| if day.attribute("time") @days << ExchangeDate.new(day.attribute("time").value, day.children.map do |currency| Currency.new(name: currency.attribute("currency").value, value: currency.attribute("rate").value) end) end end end
rate(date, currency)
click to toggle source
# File lib/fxify/base_class.rb, line 24 def rate(date, currency) @days.detect { |d| d.day == date }.currencies.detect { |c| c.name == currency }.value end