Sha256: e4016298809ba08ba61504aab7401a120326491ad63aeccfcaa322021e1c2e69

Contents?: true

Size: 1.2 KB

Versions: 7

Compression:

Stored size: 1.2 KB

Contents

module CurrencyRate
  class CoinMarketCapAdapter < Adapter
    # No need to use it for fetching, just additional information about supported currencies
    SUPPORTED_CURRENCIES = %w(
      ADA AE AION AOA ARDR ARK BAT BCD BCH BCN BCZERO BNB BNT BSV
      BTC BTG BTM BTS CNX CRO DAI DASH DCN DCR DEX DGB DGD DGTX DOGE
      ELA EOS ETC ETH ETN ETP FCT GNT GUSD HOT ICX INB IOST KCS KMD
      LINK LKY LRC LSK LTC MAID MANA MCO MGO MIOTA MKR MONA MXM NANO
      NEO NEXO NPXS ODE OMG ONT PAX PIVX POLY PPT QTUM RDD REP REPO
      RVN SNT STEEM STRAT TRX TUSD USDC USDT VET WAN WAVES WAX WTC
      XEM XIN XLM XMR XRP XTZ XVG XZC ZEC ZIL ZRX
    )

    ANCHOR_CURRENCY = "BTC"

    FETCH_URL = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest"
    API_KEY_PARAM = "CMC_PRO_API_KEY"

    def normalize(data)
      return nil unless super
      data["data"].each_with_object({ "anchor" => ANCHOR_CURRENCY }) do |payload, result|
        if payload["symbol"] == ANCHOR_CURRENCY
          result["USD"] = BigDecimal(payload["quote"]["USD"]["price"].to_s)
        else
          result[payload["symbol"]] = result["USD"] / BigDecimal(payload["quote"]["USD"]["price"].to_s)
        end
      end
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

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