class Cochimetl::WebServiceClient
Constants
- BANXICO_WS_URL
- SUPPORTED_CURRENCIES
Attributes
exchange_rate[R]
Public Class Methods
new()
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 15 def initialize @client = Savon.client(wsdl: BANXICO_WS_URL) fetch_exchange_rates end
Public Instance Methods
client_operations()
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 20 def client_operations @client.operations end
exchange(currency)
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 24 def exchange(currency) fetch_exchange_rates if Date.today.to_s != exchange_rate_time_period @exchange_rate[currency] end
supported_currencies()
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 29 def supported_currencies SUPPORTED_CURRENCIES.keys end
Private Instance Methods
exchange_rate_time_period()
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 59 def exchange_rate_time_period @exchange_rate_time_period end
fetch_exchange_rates()
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 35 def fetch_exchange_rates @exchange_rate = {} SUPPORTED_CURRENCIES.each {|key, value| @exchange_rate[key] = process_exchange_rate(value)} @exchange_rate end
process_banxico_xml_doc()
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 41 def process_banxico_xml_doc exchange_response = @client.call(:tipos_de_cambio_banxico) Nokogiri::XML(exchange_response.body[:tipos_de_cambio_banxico_response][:result]) end
process_exchange_rate(currency_id)
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 47 def process_exchange_rate(currency_id) return 1.0 if currency_id == "0" exchange_object = process_banxico_xml_doc.search("[IDSERIE=#{currency_id}]").children[1].to_h set_exchange_rate_time_period(exchange_object["TIME_PERIOD"]) exchange_object["OBS_VALUE"].to_f end
set_exchange_rate_time_period(time_period)
click to toggle source
# File lib/Cochimetl/web_service_client.rb, line 55 def set_exchange_rate_time_period(time_period) @exchange_rate_time_period = time_period end