Class: QuestradeApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/questrade_api/client.rb

Overview

Author:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}, mode = :practice) ⇒ Client

Returns a new instance of Client.

See Also:



22
23
24
25
# File 'lib/questrade_api/client.rb', line 22

def initialize(params = {}, mode = :practice)
  @authorization = QuestradeApi::Authorization.new(params, mode)
  refresh_token if refresh_token?
end

Instance Attribute Details

#authorizationObject (readonly)

Returns the value of attribute authorization.



19
20
21
# File 'lib/questrade_api/client.rb', line 19

def authorization
  @authorization
end

Instance Method Details

#accountsArray<QuestradeApi::REST::Account>

Fetch all accounts associated with user.

Returns:



46
47
48
# File 'lib/questrade_api/client.rb', line 46

def accounts
  QuestradeApi::REST::Account.all(@authorization).accounts
end

#activities(account_id, params = {}) ⇒ Object



72
73
74
# File 'lib/questrade_api/client.rb', line 72

def activities(, params = {})
  QuestradeApi::REST::Activity.all(@authorization, , params)
end

#balances(account_id) ⇒ OpenStruct(per_currency_balances)

Fetch all balances associated with account.

Parameters:

  • account_id (String)

    to which balances will be fetched.

Returns:

  • (OpenStruct(per_currency_balances))


64
65
66
# File 'lib/questrade_api/client.rb', line 64

def balances()
  QuestradeApi::REST::Balance.all(@authorization, )
end

#candles(symbol_id, params) ⇒ Object



105
106
107
# File 'lib/questrade_api/client.rb', line 105

def candles(symbol_id, params)
  QuestradeApi::REST::Candle.all(@authorization, symbol_id, params)
end

#executions(account_id, params = {}) ⇒ Object



68
69
70
# File 'lib/questrade_api/client.rb', line 68

def executions(, params = {})
  QuestradeApi::REST::Execution.all(@authorization, , params)
end

#marketsObject



80
81
82
# File 'lib/questrade_api/client.rb', line 80

def markets
  QuestradeApi::REST::Market.all(@authorization)
end

#orders(account_id, params = {}) ⇒ Object



76
77
78
# File 'lib/questrade_api/client.rb', line 76

def orders(, params = {})
  QuestradeApi::REST::Activity.all(@authorization, , params)
end

#positions(account_id) ⇒ Array<QuestradeApi::REST::Position>

Fetch all positions associated with account.

Parameters:

  • account_id (String)

    to which positions will be fetched.

Returns:



55
56
57
# File 'lib/questrade_api/client.rb', line 55

def positions()
  QuestradeApi::REST::Position.all(@authorization, ).positions
end

#quote(id) ⇒ Object



96
97
98
99
100
101
102
103
# File 'lib/questrade_api/client.rb', line 96

def quote(id)
  quote =
    QuestradeApi::REST::Quote.new(authorization: @authorization, id: id)

  quote.get

  quote
end

#quotes(ids) ⇒ Object



92
93
94
# File 'lib/questrade_api/client.rb', line 92

def quotes(ids)
  QuestradeApi::REST::Quote.all(@authorization, ids)
end

#refresh_tokenObject

Fetches a new access_token. (see QuestradeApi::Authorization#refresh_token)



28
29
30
# File 'lib/questrade_api/client.rb', line 28

def refresh_token
  @authorization.refresh_token
end

#search_symbols(params) ⇒ Object



88
89
90
# File 'lib/questrade_api/client.rb', line 88

def search_symbols(params)
  QuestradeApi::REST::Symbol.search(@authorization, params)
end

#symbol_options(symbol_id) ⇒ Object



109
110
111
# File 'lib/questrade_api/client.rb', line 109

def symbol_options(symbol_id)
  QuestradeApi::REST::Option.all(@authorization, symbol_id)
end

#symbols(params) ⇒ Object



84
85
86
# File 'lib/questrade_api/client.rb', line 84

def symbols(params)
  QuestradeApi::REST::Symbol.all(@authorization, params)
end

#timeDateTime?

Fetch current server time.

Returns:

  • (DateTime)

    if no issues to call /time endpoint occurs.

  • (nil)

    if current server time cannot be fetched.



36
37
38
39
40
41
# File 'lib/questrade_api/client.rb', line 36

def time
  time = QuestradeApi::REST::Time.new(@authorization)
  time.get

  time.data && time.data.time
end