Class: ExchangeRate::API

Inherits:
Object
  • Object
show all
Defined in:
lib/exchangerate_api_ruby/api.rb

Class Method Summary collapse

Class Method Details

.fetch(currency) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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