Class: QuestradeApi::Authorization

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/questrade_api/authorization.rb

Overview

Author:

Constant Summary collapse

MODE =
%i(live practice).freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, mode = :practice) ⇒ Authorization

Note:

Only access_token, api_server, and refresh_token are needed for this gem.

Initialize an instance of QuestradeApi::Client.

Parameters:

  • params (Hash)

    for Questrade authorization.

  • mode (Symbol) (defaults to: :practice)

    accessed on Questrade, :live or :practice

Options Hash (params):

  • :access_token (String)

    Access token used to access API.

  • :api_server (String)

    Endpoint used to access API. Example: 'https://apiXX.iq.questrade.com/', where X is a number.

  • :expires_in (Integer)

    How much time the access token is valid.

  • :refresh_token (String)

    Token used to get a new access token.

  • :token_type (String)

    Token type.



26
27
28
29
30
31
32
33
# File 'lib/questrade_api/authorization.rb', line 26

def initialize(params, mode = :practice)
  raise 'Mode must be :live or :practice' unless MODE.include?(mode)

  @mode = mode
  @connection = build_connection

  build_data(params)
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



12
13
14
# File 'lib/questrade_api/authorization.rb', line 12

def connection
  @connection
end

#dataObject (readonly)

Returns the value of attribute data.



12
13
14
# File 'lib/questrade_api/authorization.rb', line 12

def data
  @data
end

#modeObject (readonly)

Returns the value of attribute mode.



12
13
14
# File 'lib/questrade_api/authorization.rb', line 12

def mode
  @mode
end

Instance Method Details

#access_tokenObject

Returns the authorized access token.



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

def access_token
  data.access_token
end

#live?Boolean

Checks if selected mode is live.

Returns:

  • (Boolean)


67
68
69
# File 'lib/questrade_api/authorization.rb', line 67

def live?
  mode == :live
end

#refresh_tokenObject

Note:

data will be populated accordingly, if call is successful.

Uses refresh_token to fetch a new valid access token.

Returns:

  • The result of the call.



40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/questrade_api/authorization.rb', line 40

def refresh_token
  response = connection.get do |req|
    req.params[:grant_type] = 'refresh_token'
    req.params[:refresh_token] = data.refresh_token
  end

  if response.status == 200
    raw_body = JSON.parse(response.body)
    build_data(raw_body)
  end

  response
end

#urlObject

Returns the server associated with the authorized access token.



60
61
62
# File 'lib/questrade_api/authorization.rb', line 60

def url
  data.api_server
end