class CryptoCoins::Coin

Public Class Methods

find(ticker) click to toggle source
# File lib/cryptocoins.rb, line 12
def self.find(ticker)
  response = HTTParty.get('https://api.coinmarketcap.com/v1/ticker/')
  response.each do |coin|
    if coin['symbol'] == ticker.upcase or coin['id'] == ticker.downcase or coin['name'].downcase == ticker.downcase
      return coin
    end
  end
end
markets(ticker) click to toggle source
# File lib/cryptocoins.rb, line 20
def self.markets(ticker)
  markets_json = {
      ticker.downcase => []
  }
  begin
    markets_table = Nokogiri::HTML(open("https://coinmarketcap.com/currencies/#{self.find(ticker)['id']}/"))
    markets_table = markets_table.xpath("//table[@id = 'markets-table']/tbody")
    markets_table.search('tr').each do |row|
      tds = row.search('td')
      item_json = {
          'rank' => tds[0].text,
          'name' => tds[1].text,
          'pair' => tds[2].text,
          'link' => tds[2].xpath('./a/@href').first.value,
          '24h_volume_usd' => tds[3].xpath('./span/@data-usd').first.value,
          '24h_volume_btc' => tds[3].xpath('./span/@data-btc').first.value,
          '24h_volume_native' => tds[3].xpath('./span/@data-native').first.value,
          'price_usd' => tds[4].xpath('./span/@data-usd').first.value,
          'price_btc' => tds[4].xpath('./span/@data-btc').first.value,
          'price_native' => tds[4].xpath('./span/@data-native').first.value,
          'percent_volume' => tds[5].xpath('./span/@data-format-value').first.value
      }
      markets_json[ticker.downcase] << item_json
    end
    return markets_json
  rescue
    error = {
        'error' => "Invaild HTTP Request! **#{ticker.upcase}** Coin Not Supported!"
    }
    markets_json[ticker.downcase] = []
    markets_json[ticker.downcase] << error
    return markets_json
  end
end
top(limit) click to toggle source
# File lib/cryptocoins.rb, line 8
def self.top(limit)
  options = {query: { limit: limit.to_s}}
  return HTTParty.get('https://api.coinmarketcap.com/v1/ticker/?', options)
end