Module: Sinatra::UniRate
- Defined in:
- lib/sinatra/unirate.rb
Overview
Sinatra extension wrapping the UniRate API (https://unirateapi.com) for free currency exchange rates, conversion, supported-currency listings, and VAT rates.
Register it in a classic app:
require "sinatra"
require "sinatra/unirate"
set :unirate_api_key, ENV.fetch("UNIRATE_API_KEY")
get("/eur") { unirate_convert(100, "USD", "EUR").to_s }
...or a modular app:
require "sinatra/base"
require "sinatra/unirate"
class MyApp < Sinatra::Base
register Sinatra::UniRate
set :unirate_api_key, ENV.fetch("UNIRATE_API_KEY")
get("/eur") { unirate_convert(100, "USD", "EUR").to_s }
end
Configuration is expressed through Sinatra settings:
set :unirate_api_key, "..." # falls back to ENV["UNIRATE_API_KEY"]
set :unirate_base_url, "https://api.unirateapi.com"
set :unirate_timeout, 30
set :unirate_default_currency, "USD"
set :unirate_enable_historical, false # Pro-gated; off by default
set :unirate_mount_routes, false # add /unirate/* JSON proxy routes
Defined Under Namespace
Modules: Helpers
Class Method Summary collapse
-
.client_for(settings) ⇒ Object
Builds a SinatraClient from a Sinatra settings object.
-
.registered(app) ⇒ Object
Sinatra registration hook.
Class Method Details
.client_for(settings) ⇒ Object
Builds a SinatraClient from a Sinatra settings object. The API key falls back to ENV when the setting is unset/blank so a secret never has to be committed to the host app.
96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/sinatra/unirate.rb', line 96 def client_for(settings) key = settings.unirate_api_key key = ENV.fetch("UNIRATE_API_KEY", nil) if key.nil? || key.to_s.empty? ::UniRate::SinatraClient.new( api_key: key, base_url: settings.unirate_base_url, timeout: settings.unirate_timeout, enable_historical: settings.unirate_enable_historical ) end |
.registered(app) ⇒ Object
Sinatra registration hook. Sets default settings, mixes in the helpers, and — when :unirate_mount_routes is on — adds the JSON proxy routes.
110 111 112 113 114 |
# File 'lib/sinatra/unirate.rb', line 110 def registered(app) apply_defaults(app) app.helpers(Helpers) mount_routes(app) end |