class CurrencyExchange::Xe
Constants
- BASE_URL
- QUERY
Public Class Methods
get_rate(query)
click to toggle source
# File lib/currency_exchange/xe.rb, line 5 def self.get_rate(query) rates_parser request_rate(query) end
rates_parser(resp)
click to toggle source
# File lib/currency_exchange/xe.rb, line 9 def self.rates_parser(resp) doc = Nokogiri::HTML(resp) date = parse_date(doc) currency1, currency2, rate = parse_rate doc CurrencyExchange::Rate.new("#{currency1}/#{currency2}", rate, date: date) end
Private Class Methods
parse_date(doc)
click to toggle source
# File lib/currency_exchange/xe.rb, line 27 def self.parse_date(doc) doc.css('.uccMMR').css('a').children.first.inner_text. split('Mid-market rates: ').last end
parse_rate(doc)
click to toggle source
# File lib/currency_exchange/xe.rb, line 32 def self.parse_rate(doc) exchange = doc.css('.uccResUnit').css('.leftCol')[0].inner_text currency1, currency2 = exchange.gsub(/[\u0080-\u00ff]/, ' ').split(' = ') currency1 = currency1.split(' ').last rate, currency2 = currency2.split(' ') [currency1, currency2, rate] end
query_builder(query)
click to toggle source
# File lib/currency_exchange/xe.rb, line 23 def self.query_builder(query) QUERY % query end
request_rate(query)
click to toggle source
Private Methods
# File lib/currency_exchange/xe.rb, line 19 def self.request_rate(query) CurrencyExchange::Network.get "#{BASE_URL}?#{query_builder(query)}" end