Sha256: abe53360154ba4a06748e596815af5edff605e5b72e51b70053a772c0e30fe4b
Contents?: true
Size: 1.06 KB
Versions: 7
Compression:
Stored size: 1.06 KB
Contents
module Economy module Rates class Yahoo < Base private def call ids = Economy.currencies.map(&:iso_code).permutation(2).map(&:join).join(',') uri = URI('https://query.yahooapis.com/v1/public/yql') uri.query = URI.encode_www_form( q: "select * from yahoo.finance.xchange where pair in ('#{ids}')", env: 'store://datatables.org/alltableswithkeys', format: 'json' ) response = Net::HTTP.get_response(uri) if response.code == '200' body = JSON.parse(response.body.downcase, symbolize_names: true) results = body[:query][:results][:rate] if results.is_a?(Hash) results = [results] end rates = [] results.each do |result| if result[:name] != 'n/a' from, to = result[:name].split('/').map(&:upcase) rate = BigDecimal(result[:rate]) rates << [from, to, rate] end end rates else [] end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems