class BasicYahooFinance::Query

Class to send queries to Yahoo Finance API

Constants

API_URL

Public Instance Methods

quotes(symbols) click to toggle source
# File lib/basic_yahoo_finance.rb, line 12
def quotes(symbols)
  symbols_value = generate_symbols_value(symbols)
  begin
    uri = URI.open("#{API_URL}/v7/finance/quote?symbols=#{symbols_value}",
                   "User-Agent" => "BYF/#{BasicYahooFinance::VERSION}")
    process_output(JSON.parse(uri.read))
  rescue OpenURI::HTTPError
    empty_symbols_hash(symbols)
  end
end

Private Instance Methods

empty_symbols_hash(symbols) click to toggle source
# File lib/basic_yahoo_finance.rb, line 47
def empty_symbols_hash(symbols)
  hash = {}
  case symbols
  when String
    hash[symbols] = {}
  when Array
    symbols.each do |s|
      hash[s] = {}
    end
  end
  hash
end
generate_symbols_value(symbols, separator = ",") click to toggle source
# File lib/basic_yahoo_finance.rb, line 25
def generate_symbols_value(symbols, separator = ",")
  case symbols
  when String
    symbols
  when Array
    symbols.join(separator)
  end
end
process_output(json) click to toggle source
# File lib/basic_yahoo_finance.rb, line 34
def process_output(json)
  hash = {}
  if json["quoteResponse"]["result"].count == 1
    hash[json["quoteResponse"]["result"][0]["symbol"]] = json["quoteResponse"]["result"].pop
  elsif json["quoteResponse"]["result"].count > 1
    json["quoteResponse"]["result"].each do |r|
      hash[r["symbol"]] = r
    end
  end
  # TODO: compare hash keys with symbol(s) requested and add symbols which had no results from API
  hash
end