class Stocktastic::Adapter::Yahoo

Adapter for interfacing with Yahoo finance

Constants

PARAMETER_MAP

List of available paramters This list is used as a single source of reference for a) mapping between requested parameters and url parameters and b) mapping between the result array and hash keys.

QUOTES_URI

Uri used for fetching quotes

Public Instance Methods

get_multiple_quotes(symbols, options = {}) click to toggle source

Fetches quote details for multiple symbols. Last argument can specify options:

  • :parameters Array of parameters to get (default is everything)

# File lib/stocktastic/adapter/yahoo.rb, line 36
def get_multiple_quotes symbols, options = {}
  options[:parameters] ||= PARAMETER_MAP.keys
  get_quotes symbols, options[:parameters]
end
get_single_quote(symbol, options = {}) click to toggle source

Fetches quote details for a single symbol. Last argument can specify options:

  • :parameters Array of parameters to get (default is everything)

# File lib/stocktastic/adapter/yahoo.rb, line 29
def get_single_quote symbol, options = {}
  get_multiple_quotes([symbol], options)[0]
end

Private Instance Methods

get_quotes(symbols, parameters) click to toggle source
# File lib/stocktastic/adapter/yahoo.rb, line 43
def get_quotes symbols, parameters
   response = get_response(uri(symbols, parameters))
   map_result parse(response.body), parameters
end
get_response(uri) click to toggle source
# File lib/stocktastic/adapter/yahoo.rb, line 48
def get_response uri
  Net::HTTP.get_response(uri)
end
map_result(result, parameters) click to toggle source
# File lib/stocktastic/adapter/yahoo.rb, line 52
def map_result result, parameters
  result.map {|q| parameters.zip(q).to_h }
end
parse(text) click to toggle source
# File lib/stocktastic/adapter/yahoo.rb, line 56
def parse text
  CSV.parse text
end
uri(symbols, parameters) click to toggle source
# File lib/stocktastic/adapter/yahoo.rb, line 60
def uri symbols, parameters
  symbols = symbols.join '+'
  parameters = PARAMETER_MAP.values_at(*parameters).join

  URI.parse "#{QUOTES_URI}?s=#{symbols}&f=#{parameters}"
end