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