class CoinTools::CoinMarketCap::CoinData
Attributes
btc_price[R]
converted_price[R]
last_updated[R]
market_cap[R]
rank[R]
usd_price[R]
Public Class Methods
new(json, convert_to = nil)
click to toggle source
Calls superclass method
CoinTools::CoinMarketCap::Listing::new
# File lib/cointools/coinmarketcap.rb, line 38 def initialize(json, convert_to = nil) super(json) raise ArgumentError.new('Missing rank field') unless json['rank'] raise ArgumentError.new('Invalid rank field') unless json['rank'].is_a?(Integer) && json['rank'] > 0 @rank = json['rank'] quotes = json['quotes'] raise ArgumentError.new('Missing quotes field') unless quotes raise ArgumentError.new('Invalid quotes field') unless quotes.is_a?(Hash) usd_quote = quotes['USD'] raise ArgumentError.new('Missing USD quote info') unless usd_quote raise ArgumentError.new('Invalid USD quote info') unless usd_quote.is_a?(Hash) @usd_price = usd_quote['price']&.to_f @market_cap = usd_quote['market_cap']&.to_f if convert_to converted_quote = quotes[convert_to.upcase] if converted_quote raise ArgumentError.new("Invalid #{convert_to.upcase} quote info") unless converted_quote.is_a?(Hash) @converted_price = converted_quote['price']&.to_f end else btc_quote = quotes['BTC'] if btc_quote raise ArgumentError.new("Invalid BTC quote info") unless btc_quote.is_a?(Hash) @btc_price = btc_quote['price']&.to_f end end timestamp = json['last_updated'] @last_updated = Time.at(timestamp) if timestamp end