class Series

Constants

INTERVAL_OPTIONS

Public Class Methods

new(symbol, params, agent) click to toggle source
# File lib/finviz_rails/series.rb, line 2
def initialize(symbol, params, agent)
  @symbol = symbol
  @params = params
  @agent = agent
end

Public Instance Methods

run() click to toggle source
# File lib/finviz_rails/series.rb, line 10
def run
  @agent.get(url)
  result
end

Private Instance Methods

html() click to toggle source
# File lib/finviz_rails/series.rb, line 45
def html
  @html ||= @agent.page.content
end
interval() click to toggle source
# File lib/finviz_rails/series.rb, line 49
def interval
  if @params["interval"]
    throw "incorrect interval type" unless INTERVAL_OPTIONS.include?(@params["interval"])
    @params["interval"]
  else
    "d"
  end
end
json() click to toggle source
# File lib/finviz_rails/series.rb, line 37
def json
  @json ||= JSON.parse(json_string)
end
json_string() click to toggle source
# File lib/finviz_rails/series.rb, line 41
def json_string
  html.match(/var data = ({.*?})/)[1]
end
result() click to toggle source
# File lib/finviz_rails/series.rb, line 17
def result
  [
    json["date"],
    json["volume"],
    json["open"],
    json["high"],
    json["low"],
    json["close"]
  ].transpose.map do |date, volume, open, close, high, low|
    {
      date: date,
      volume: volume,
      open: open,
      high: high,
      low: low,
      close: close
    }
  end
end
url() click to toggle source
# File lib/finviz_rails/series.rb, line 58
def url
  "http://elite.finviz.com/quote.ashx?t=TNET&ty=c&ta=2&p=#{interval}&b=1"
end