Sha256: 06fd84a2748f912a5ab1069c8cc11de8610db787663af08a90d07a44573029b6

Contents?: true

Size: 1.35 KB

Versions: 6

Compression:

Stored size: 1.35 KB

Contents

module CurrencyRate
  class KrakenAdapter < Adapter
    SUPPORTED_CURRENCIES = %w(
      ADA BCH BSV BTC DASH EOS ETC ETH GNO LTC MLN
      NMC QTUM REP XDG XLM XMR XRP XTZ ZEC
    )

    ASSET_MAP = {
                  "XXBTZ" => "BTC",
                  "XETCX" => "ETC",
                  "XETHX" => "ETH",
                  "XLTCX" => "LTC",
                  "XREPX" => "REP",
                  "XXLMX" => "XLM",
                  "XXMRX" => "XMR",
                  "XXRPX" => "XRP",
                  "XZECX" => "ZEC",
                  "XZUSD" => "USD",
                  "BTC"   => "XBT",
                }

    ANCHOR_CURRENCY = "BTC"

    FETCH_URL = "https://api.kraken.com/0/public/Ticker?pair=#{ %w(ADAXBT BCHXBT BSVXBT DASHXBT EOSXBT GNOXBT QTUMXBT XTZXBT XETCXXBT XETHXXBT XLTCXXBT XREPXXBT XXLMXXBT XXMRXXBT XXRPXXBT XZECXXBT XXBTZUSD).join(",") }"

    def normalize(data)
      return nil unless super
      data["result"].reduce({ "anchor" => ANCHOR_CURRENCY }) do |result, (pair, value)|
        key = ta(pair.sub(ta(ANCHOR_CURRENCY), ""))

        if key == "USD"
          result[key] = BigDecimal(value["c"].first.to_s)
        else
          result[key] = 1 / BigDecimal(value["c"].first.to_s)
        end
        result
      end
    end

    def translate_asset(asset)
      ASSET_MAP[asset] || asset
    end
    alias_method :ta, :translate_asset

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
currency-rate-1.6.1 lib/adapters/crypto/kraken_adapter.rb
currency-rate-1.6.0 lib/adapters/crypto/kraken_adapter.rb
currency-rate-1.5.4 lib/adapters/crypto/kraken_adapter.rb
currency-rate-1.5.3 lib/adapters/crypto/kraken_adapter.rb
currency-rate-1.5.2 lib/adapters/crypto/kraken_adapter.rb
currency-rate-1.5.1 lib/adapters/crypto/kraken_adapter.rb