class Capwatch::Providers::CoinMarketCap

Constants

NoCoinInProvider
TICKER_URL

Attributes

body[RW]

Public Instance Methods

fetch() click to toggle source
# File lib/capwatch/providers/coin_market_cap.rb, line 22
def fetch
  @body ||= open(TICKER_URL).read
end
fetched_json() click to toggle source
# File lib/capwatch/providers/coin_market_cap.rb, line 16
def fetched_json
  response = parse(fetch)
  update_rates(response)
  response
end
parse(response) click to toggle source
# File lib/capwatch/providers/coin_market_cap.rb, line 26
def parse(response)
  JSON.parse(response)
end
update_coin(coin) click to toggle source
# File lib/capwatch/providers/coin_market_cap.rb, line 39
def update_coin(coin)
  provider_coin = fetched_json.find { |c| c["symbol"] == coin.symbol }
  fail NoCoinInProvider, "No #{coin.symbol} in provider response" if provider_coin.nil?
  coin.name               = provider_coin["name"]
  coin.price_usd          = provider_coin["price_usd"].to_f
  coin.price_btc          = provider_coin["price_btc"].to_f
  coin.percent_change_1h  = provider_coin["percent_change_1h"].to_f
  coin.percent_change_24h = provider_coin["percent_change_24h"].to_f
  coin.percent_change_7d  = provider_coin["percent_change_7d"].to_f
end
update_rates(response) click to toggle source
# File lib/capwatch/providers/coin_market_cap.rb, line 30
def update_rates(response)
  response.each do |coin_json|
    Capwatch::Exchange.rate(
      coin_json['symbol'],
      coin_json["price_btc"].to_f
    )
  end
end