lib/adapters/crypto/kraken_adapter.rb in currency-rate-1.2.0 vs lib/adapters/crypto/kraken_adapter.rb in currency-rate-1.4.1

- old
+ new

@@ -1,22 +1,33 @@ module CurrencyRate class KrakenAdapter < Adapter - FETCH_URL = { - "BTC_USD" => "https://api.kraken.com/0/public/Ticker?pair=xbtusd", - "BTC_EUR" => "https://api.kraken.com/0/public/Ticker?pair=xbteur", - "LTC_USD" => "https://api.kraken.com/0/public/Ticker?pair=ltcusd", - "LTC_EUR" => "https://api.kraken.com/0/public/Ticker?pair=ltceur", - } + SUPPORTED_CURRENCIES = %w( + ADA BCH BSV BTC DASH EOS ETC ETH GNO LTC MLN + NMC QTUM REP USDT XDG XLM XMR XRP XTZ ZEC + ) ASSET_MAP = { - "BTC" => "XBT", - } + "XXBTZ" => "BTC", + "XETCZ" => "ETC", + "XETHZ" => "ETH", + "XLTCZ" => "LTC", + "XREPZ" => "REP", + "XXLMZ" => "XLM", + "XXMRZ" => "XMR", + "XXRPZ" => "XRP", + "XZECZ" => "ZEC", + "USDTZ" => "USDT", + "TZUSD" => "USDT", + } + ANCHOR_CURRENCY = "USD" + + FETCH_URL = "https://api.kraken.com/0/public/Ticker?pair=#{ %w(ADAUSD BCHUSD BSVUSD DASHUSD EOSUSD GNOUSD QTUMUSD XTZUSD USDTZUSD XETCZUSD XETHZUSD XLTCZUSD XREPZUSD XXLMZUSD XXMRZUSD XXRPZUSD XZECZUSD XXBTZUSD).join(",") }" + def normalize(data) return nil unless super - data.reduce({}) do |result, (pair, value)| - crypto, fiat = pair.split("_") - result[pair] = BigDecimal.new(value["result"]["X#{ta(crypto)}Z#{ta(fiat)}"]["c"].first.to_s) + data["result"].reduce({ "anchor" => ANCHOR_CURRENCY, ANCHOR_CURRENCY => BigDecimal.new("1") }) do |result, (pair, value)| + result[ta(pair.sub(ANCHOR_CURRENCY, ""))] = 1 / BigDecimal.new(value["c"].first.to_s) result end end def translate_asset(asset)