Class: ExchangerateApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/exchangerate_api/client.rb

Overview

# Client

Client to fetch currency exchange rate data.

Examples:

require "exchagerate_api"

client = ExchangerateApi::Client.new

client.rates_for('USD')

client.rates_for('EUR')

Constant Summary collapse

SERVICE_ADDRESS =

Address of the exchagerate api service.

'https://api.exchangerate-api.com'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version: 'v4') ⇒ Client

Creates a new Client instance.

Parameters:

  • version (String) (defaults to: 'v4')

    Version of the api. Default value is ‘v4`



33
34
35
36
37
38
39
# File 'lib/exchangerate_api/client.rb', line 33

def initialize(version: 'v4')
  @version = version
  @connection = Faraday.new(url: SERVICE_ADDRESS) do |conn|
    conn.response :json
    conn.adapter Faraday.default_adapter
  end
end

Instance Attribute Details

#versionString (readonly)

Returns Exchangerate api version.

Returns:

  • (String)

    Exchangerate api version.



28
29
30
# File 'lib/exchangerate_api/client.rb', line 28

def version
  @version
end

Instance Method Details

#currency_codesHash

List all supported currency codes with countries

Returns:



60
61
62
# File 'lib/exchangerate_api/client.rb', line 60

def currency_codes
  CurrencyCodes::CODES
end

#rates_for(currency_code) ⇒ ExchangerateApi::Result

Fetch exchage rate data by currency code

Parameters:

  • currency_code (String)

    ISO format currency code. Supported currency codes are.

Returns:

Raises:



49
50
51
52
53
54
55
# File 'lib/exchangerate_api/client.rb', line 49

def rates_for(currency_code)
  resp = @connection.get("/#{version}/latest/#{currency_code}")

  return Result.new(resp.body) if resp.status == 200

  raise ExchangerateApi::Error.new(status: resp.status, message: resp.body)
end

#rates_for_usdExchangerateApi::Result

Get exchage rate for usd

Returns:



67
68
69
# File 'lib/exchangerate_api/client.rb', line 67

def rates_for_usd
  rates_for 'USD'
end