Class: QuestradeApi::REST::Base
- Inherits:
-
Object
- Object
- QuestradeApi::REST::Base
- Includes:
- Util
- Defined in:
- lib/questrade_api/rest/base.rb
Overview
Direct Known Subclasses
Account, Activity, Balance, Candle, Execution, Market, Option, Order, Position, Quote, Symbol, Time
Constant Summary collapse
- BASE_ENDPOINT =
'/v1'.freeze
Instance Attribute Summary collapse
-
#authorization ⇒ Object
Returns the value of attribute authorization.
-
#connection ⇒ Object
Returns the value of attribute connection.
-
#data ⇒ Object
Returns the value of attribute data.
-
#endpoint ⇒ Object
Returns the value of attribute endpoint.
-
#raw_body ⇒ Object
Returns the value of attribute raw_body.
Class Method Summary collapse
-
.connection(params = {}) ⇒ Faraday
Builds a new Faraday connection to access endpoint.
- .fetch(params = {}) ⇒ Object
Instance Method Summary collapse
- #build_attributes(response) ⇒ Object protected
- #build_data(data) ⇒ Object protected
- #fetch(params = {}) ⇒ Object protected
-
#initialize(authorization) ⇒ Base
constructor
Initialize an instance of QuestradeApi::REST::Base.
- #url ⇒ String
Constructor Details
#initialize(authorization) ⇒ Base
Initialize an instance of QuestradeApi::REST::Base
18 19 20 21 22 23 24 25 |
# File 'lib/questrade_api/rest/base.rb', line 18 def initialize() @authorization = # TODO: Review this later @connection = self.class.connection(url: url, access_token: @authorization.access_token) end |
Instance Attribute Details
#authorization ⇒ Object
Returns the value of attribute authorization.
12 13 14 |
# File 'lib/questrade_api/rest/base.rb', line 12 def @authorization end |
#connection ⇒ Object
Returns the value of attribute connection.
12 13 14 |
# File 'lib/questrade_api/rest/base.rb', line 12 def connection @connection end |
#data ⇒ Object
Returns the value of attribute data.
12 13 14 |
# File 'lib/questrade_api/rest/base.rb', line 12 def data @data end |
#endpoint ⇒ Object
Returns the value of attribute endpoint.
12 13 14 |
# File 'lib/questrade_api/rest/base.rb', line 12 def endpoint @endpoint end |
#raw_body ⇒ Object
Returns the value of attribute raw_body.
12 13 14 |
# File 'lib/questrade_api/rest/base.rb', line 12 def raw_body @raw_body end |
Class Method Details
.connection(params = {}) ⇒ Faraday
Builds a new Faraday connection to access endpoint.
39 40 41 42 43 44 45 46 |
# File 'lib/questrade_api/rest/base.rb', line 39 def self.connection(params = {}) Faraday.new(params[:url]) do |faraday| # faraday.response :logger faraday.adapter Faraday.default_adapter faraday.headers['Content-Type'] = 'application/json' faraday.headers['Authorization'] = "Bearer #{params[:access_token]}" end end |
.fetch(params = {}) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/questrade_api/rest/base.rb', line 74 def fetch(params = {}) connection = connection(params) connection.get do |req| req.path = params[:endpoint] params.fetch(:params, []).each do |key, value| req.params[key] = value end end end |
Instance Method Details
#build_attributes(response) ⇒ Object (protected)
55 56 57 |
# File 'lib/questrade_api/rest/base.rb', line 55 def build_attributes(response) @raw_body = JSON.parse(response.body) end |
#build_data(data) ⇒ Object (protected)
50 51 52 53 |
# File 'lib/questrade_api/rest/base.rb', line 50 def build_data(data) hash = hash_to_snakecase(data) @data = OpenStruct.new(hash) end |
#fetch(params = {}) ⇒ Object (protected)
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/questrade_api/rest/base.rb', line 59 def fetch(params = {}) response = @connection.get do |req| req.path = params[:endpoint] || self.class.endpoint params.fetch(:params, []).each do |key, value| req.params[key] = value end end build_attributes(response) if response.status == 200 response end |
#url ⇒ String
28 29 30 |
# File 'lib/questrade_api/rest/base.rb', line 28 def url .url end |