class ExchangeRate::API

Public Class Methods

fetch(currency) click to toggle source
# File lib/exchangerate_api_ruby/api.rb, line 8
def fetch currency
  raise ArgumentError, "missing currency argument" if currency.nil?
  raise ArgumentError, "invalid currency argument" unless EXCHANGERATE_API_CURRENCY_CODES.keys.include?(currency)

  uri = URI.parse("https://v6.exchangerate-api.com/v6/#{ExchangeRate.config.api_key}/latest/#{currency.upcase}")

  response = nil
  result = nil
  Net::HTTP.start(uri.host, uri.port, use_ssl: ExchangeRate.config.use_ssl) do |http|
    req = Net::HTTP::Get.new(uri)
    req['Content-Type'] = 'application/json'
    response = http.request(req)
    result = response&.body
  end #/block

  {
    success: response.instance_of?(Net::HTTPOK),
    response: response,
    result: JSON.parse(result)
  }
rescue
  {
    success: false,
    response: nil
  }
end