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)