Sha256: 350c53a55fd6a8cc34c5807a6537a24a3d3be05b338aae2a7383e663da0746a8
Contents?: true
Size: 987 Bytes
Versions: 1
Compression:
Stored size: 987 Bytes
Contents
require 'net/http' require 'json' require_relative './exceptions' module Mint module FixerCurrency # Fetch exchange rates from http://fixer.io class Request def initialize(currency, date = nil) @currency = currency @date = date end # @return Hash def perform! url = @date ? "http://api.fixer.io/#{@date}?base=#{@currency}" : "http://api.fixer.io/latest?base=#{@currency}" parse(fetch(url)) end private # @return [String] def fetch(url) uri = URI(url) http = Net::HTTP.new(uri.host, 80) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) response.body end # @return [Hash] def parse(body) json = JSON.parse(body) error = json.fetch('error', nil) raise FixerArgumentError, error if error Hash[json.fetch('rates', nil).map { |k, v| [k.to_sym, v] }] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mint-fixer_currency-0.1.0 | lib/mint/fixer_currency/request.rb |