class Stockfighter::Api

Public Class Methods

new(key:, account:, symbol:, venue:, base_url: "https://api.stockfighter.io/ob/api") click to toggle source
# File lib/stockfighter/api.rb, line 5
def initialize(key:, account:, symbol:, venue:, base_url: "https://api.stockfighter.io/ob/api")
  @base_url = base_url
  @api_key = key
  @account = account
  @symbol = symbol
  @venue = venue
end

Public Instance Methods

cancel_order(order_id) click to toggle source
# File lib/stockfighter/api.rb, line 30
def cancel_order(order_id)
  perform_request("delete", "#{@base_url}/venues/#{@venue}/stocks/#{@symbol}/orders/#{order_id}")
end
get_quote() click to toggle source
# File lib/stockfighter/api.rb, line 13
def get_quote
  perform_request("get", "#{@base_url}/venues/#{@venue}/stocks/#{@symbol}/quote")
end
order_book() click to toggle source
# File lib/stockfighter/api.rb, line 38
def order_book
  perform_request("get", "#{@base_url}/venues/#{@venue}/stocks/#{@symbol}")
end
order_status(order_id) click to toggle source
# File lib/stockfighter/api.rb, line 34
def order_status(order_id)
  perform_request("get", "#{@base_url}/venues/#{@venue}/stocks/#{@symbol}/orders/#{order_id}")
end
place_order(price:, quantity:, direction:, order_type:) click to toggle source
# File lib/stockfighter/api.rb, line 17
def place_order(price:, quantity:, direction:, order_type:)
  order = {
    "account" => @account,
    "venue" => @venue,
    "stock" => @symbol,
    "price" => price,
    "qty" => quantity,
    "direction" => direction,
    "orderType" => order_type
  }
  perform_request("post", "#{@base_url}/venues/#{@venue}/stocks/#{@symbol}/orders", body: JSON.dump(order))
end
status_all() click to toggle source
# File lib/stockfighter/api.rb, line 47
def status_all
  perform_request("get", "#{@base_url}/venues/#{@venue}/accounts/#{@account}/orders")
end
venue_up?() click to toggle source
# File lib/stockfighter/api.rb, line 42
def venue_up?
  response = perform_request("get", "#{@base_url}/venues/#{@venue}/heartbeat")
  response["ok"]
end

Private Instance Methods

perform_request(action, url, body:nil) click to toggle source
# File lib/stockfighter/api.rb, line 51
def perform_request(action, url, body:nil)
  options = {
    :headers => {"X-Starfighter-Authorization" => @api_key},
    :format => :json
  }
  if body != nil
    options[:body] = body
  end
  response = HTTParty.method(action).call(url, options)

  if response.code == 200 and response["ok"]
    response
  elsif not response["ok"]
    raise "Error response received from #{url}: #{response['error']}"
  else
    raise "HTTP error response received from #{url}: #{response.code}"
  end
end