class CurrencyExchange::Yahoo

Constants

BASE_URL
END_URL

Public Class Methods

get_rates(query) click to toggle source
# File lib/currency_exchange/yahoo.rb, line 5
def self.get_rates(query)
  rates_parser request_rates(query)
end
rates_parser(resp) click to toggle source
# File lib/currency_exchange/yahoo.rb, line 9
def self.rates_parser(resp)
  xml = Nokogiri::XML(resp)
  rates = []
  xml.xpath('//rate').each do |rate|
    rates << parse_rate(rate.children)
  end
  rates
end

Private Class Methods

parse_rate(node) click to toggle source
# File lib/currency_exchange/yahoo.rb, line 24
def self.parse_rate(node)
  hash = {}
  node.each do |attribute|
    hash[attribute.name.downcase.to_sym] = attribute.inner_text
  end
  CurrencyExchange::Rate.new(hash[:name], hash[:rate], hash)
end
query_builder(array) click to toggle source
# File lib/currency_exchange/yahoo.rb, line 32
def self.query_builder(array)
  query = '('
  array.each_with_index do |item, i|
    query += "%22#{item.first}#{item.last}%22"
    query += ',%20' if i.next < array.size
  end
  query + ')'
end
request_rates(query) click to toggle source

Private Methods

# File lib/currency_exchange/yahoo.rb, line 20
def self.request_rates(query)
  CurrencyExchange::Network.get "#{BASE_URL}#{query_builder(query)}#{END_URL}"
end