lib/coinmarketcap.rb in coinmarketcap-0.1.2 vs lib/coinmarketcap.rb in coinmarketcap-0.2.0

- old
+ new

@@ -1,7 +1,9 @@ require 'coinmarketcap/version' +require 'open-uri' require 'httparty' +require 'nokogiri' module Coinmarketcap def self.coins(limit = nil) if limit.nil? @@ -15,8 +17,34 @@ HTTParty.get("https://api.coinmarketcap.com/v1/ticker/#{id}/") end def self.global(currency = 'USD') HTTParty.get("https://api.coinmarketcap.com/v1/global/?convert=#{currency}") + end + + def self.get_historical_price(id, start_date, end_date) #20170908 + prices = [] + doc = Nokogiri::HTML(open("https://coinmarketcap.com/currencies/#{id}/historical-data/?start=#{start_date}&end=#{end_date}")) + rows = doc.css('tr') + if rows.count == 31 + doc = Nokogiri::HTML(open("https://coinmarketcap.com/assets/#{id}/historical-data/?start=#{start_date}&end=#{end_date}")) + rows = doc.css('tr') + end + rows.shift + rows.each do |row| + begin + price_bundle = {} + each_row = Nokogiri::HTML(row.to_s).css('td') + price_bundle[:date] = Date.parse(each_row[0].text) + price_bundle[:open] = each_row[0].text + price_bundle[:high] = each_row[1].text + price_bundle[:low] = each_row[2].text + price_bundle[:close] = each_row[3].text + prices << price_bundle + rescue => error + next + end + end + prices end end