class QuestradeApi::REST::Symbol

Public Class Methods

endpoint(extra = '') click to toggle source
# File lib/questrade_api/rest/symbol.rb, line 29
def self.endpoint(extra = '')
  "#{BASE_ENDPOINT}/symbols/#{extra}"
end
fetch(authorization, params = {}) click to toggle source
Calls superclass method QuestradeApi::REST::Base#fetch
# File lib/questrade_api/rest/symbol.rb, line 42
def self.fetch(authorization, params = {})
  params[:ids] = params[:ids].join(',') if params[:ids]
  params[:names] = params[:names].join(',') if params[:names]

  response = super(access_token: authorization.access_token,
                   endpoint: endpoint,
                   url: authorization.url,
                   params: params)

  build_symbols(authorization, response)
end
new(authorization, params = {}) click to toggle source
Calls superclass method QuestradeApi::REST::Base::new
# File lib/questrade_api/rest/symbol.rb, line 6
def initialize(authorization, params = {})
  super(authorization)

  @id = params[:id]

  @raw_body = params[:data]
  build_data(params[:data]) if @raw_body
end

Private Class Methods

build_symbols(authorization, response) click to toggle source
# File lib/questrade_api/rest/symbol.rb, line 64
def self.build_symbols(authorization, response)
  result = response

  if response.status == 200
    result = OpenStruct.new(symbols: [])
    result.symbols = parse_symbols(authorization, response.body)
  end

  result
end
parse_symbols(authorization, body) click to toggle source
# File lib/questrade_api/rest/symbol.rb, line 75
def self.parse_symbols(authorization, body)
  raw = JSON.parse(body)

  symbols = []

  results = raw['symbols'] || raw['symbol']

  if results
    results.each do |symbol|
      symbols << new(authorization, id: symbol['symbolId'], data: symbol)
    end
  end

  symbols
end

Public Instance Methods

endpoint() click to toggle source
# File lib/questrade_api/rest/symbol.rb, line 25
def endpoint
  self.class.endpoint + "#{id}"
end
fetch() click to toggle source
Calls superclass method QuestradeApi::REST::Base#fetch
# File lib/questrade_api/rest/symbol.rb, line 15
def fetch
  response = super(endpoint: endpoint)

  if response.status == 200
    parse_symbols(response.body)
  end

  response
end

Private Instance Methods

parse_symbols(body) click to toggle source
# File lib/questrade_api/rest/symbol.rb, line 56
def parse_symbols(body)
  raw = JSON.parse(body)

  raw['symbols'].each do |symbol|
    build_data(symbol)
  end
end