Sha256: 2839de420d6809b7c3c6ea00781ecb32d9d9fe22dc820cf86b490b4116d38d09

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

require 'httparty'

class Tda::Stock
  include ::HTTParty
  base_uri 'https://api.schwabapi.com/marketdata/v1'

  ## alias
  def self.get_quote which
    self.get_quotes( which )[0]
  end

  ## tickers = "GME"
  ## tickers = "NVDA,GME"
  def self.get_quotes tickers
    path = "/quotes"
    headers = {
      accept:    'application/json',
      Authorization: "Bearer #{::SCHWAB_DATA[:access_token]}",
    }
    inns = self.get path, { headers: headers, query: { symbols: tickers } }
    inns = inns.parsed_response
    # puts! inns, 'parsed response'

    if [ NilClass, String ].include?( inns.class )
      return []
    end
    inns.each do |k, v|
      inns[k] = v.deep_symbolize_keys
    end
    outs = []
    inns.each do |symbol, _obj|
      obj = _obj[:quote]
      outs.push ::Iro::Priceitem.create!({
        putCall:        'STOCK',
        symbol:          symbol,
        ticker:          symbol,
        bid:             obj[:bidPrice],
        bidSize:         obj[:bidSize],
        ask:             obj[:askPrice],
        askSize:         obj[:askSize],
        last:            obj[:lastPrice],
        openPrice:       obj[:openPrice],
        closePrice:      obj[:closePrice],
        highPrice:       obj[:highPrice],
        lowPrice:        obj[:lowPrice],
        timestamp:       Time.at( obj[:quoteTime]/1000 ),
        totalVolume:     obj[:totalVolume],
        mark:            obj[:mark],
        exchangeName:    obj[:exchangeName],
        volatility:      obj[:volatility],
      })
    end
    return outs
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
iron_warbler-2.0.7.28 app/models/tda/stock.rb