class Stockery::Quote

Attributes

source[RW]

Public Class Methods

new() click to toggle source
# File lib/stockery/quote.rb, line 5
def initialize
  self.source = Stockery::GOOGLE # default
end

Public Instance Methods

get_status(symbol) click to toggle source
# File lib/stockery/quote.rb, line 9
def get_status(symbol)
  result = case source.upcase
    when Stockery::GOOGLE then
      fetch_goog(symbol)
    when Stockery::YAHOO then
      fetch_yahoo(symbol)
    else
      abort "No valid source specified. The following source are available: \"GOOGLE\", \"YAHOO\""
    end
 
  unless result.empty?
    result[:timestamp] = Time.now.getutc
      
    result
  else
    nil
  end
end
print(stockery_data) click to toggle source

Private Instance Methods

fetch_goog(symbol) click to toggle source
# File lib/stockery/quote.rb, line 46
def fetch_goog(symbol)
  begin
    json = open("http://www.google.com/finance/info?client=ig&q=#{symbol}").read
    json = json.sub(/^\n\/\//, '')

    data = JSON.parse(json)[0]
  rescue OpenURI::HTTPError => e
  end

  data_stock = {}
  
  unless data.nil?
    data_stock[:market] = data['e']
    data_stock[:name] = data['t']
    data_stock[:price] = data['l']
    # data_stock[:price_currency] = data['l_curr']
    data_stock[:change_points] = data['c']
    data_stock[:change_procent] = data['cp']

    # data_stock[:timestamp] = data['ltt']
  end

  data_stock
end
fetch_yahoo(symbol) click to toggle source
# File lib/stockery/quote.rb, line 71
def fetch_yahoo(symbol)
  resp = Net::HTTP.get_response(URI.parse("http://download.finance.yahoo.com/d/quotes.csv?s=#{symbol}&f=snl1c1p2x&e=.csv"))
  lines = resp.body.split("\r\n")

  data_stock = {}

  lines.each do |line|
    data = JSON.parse("[#{line}]")

    data_stock[:market] = data[5]
    data_stock[:name] = data[0]
    data_stock[:price] = data[2]
    # data_stock[:price_currency] = data[0]
    data_stock[:change_points] = data[3]
    data_stock[:change_procent] = data[4].gsub!("%", "")

    # data_stock[:timestamp] = data[0]
  end
  
  data_stock
end