class QuestradeApi::REST::Balance
@author Bruno Meira <goesmeira@gmail.com>
Attributes
account_id[RW]
Public Class Methods
endpoint(account_id)
click to toggle source
# File lib/questrade_api/rest/balance.rb, line 42 def self.endpoint(account_id) "#{BASE_ENDPOINT}/accounts/#{account_id}/balances" end
fetch(authorization, account_number)
click to toggle source
Fetch account balances
@param authorization [QuestradeApi::Authorization] with the authorized access_token and url
. @param account_number [String] with the account the activities will be fetched @return [OpenStruct(per_currency_balances, combined_balances, sod_per_currency_balances, sod_combined_balances)] If call succeeds. Each method returns an array of QuestradeApi::REST::Balance
@return [Faraday::Response] if call fails.
Calls superclass method
QuestradeApi::REST::Base#fetch
# File lib/questrade_api/rest/balance.rb, line 23 def self.fetch(authorization, account_number) response = super(access_token: authorization.access_token, endpoint: endpoint(account_number), url: authorization.url) result = OpenStruct.new(per_currency_balances: [], combined_balances: [], sod_per_currency_balances: [], sod_combined_balances: []) if response.status == 200 parse_balances(account_number, response.body).each do |key, value| result.send("#{key}=", value) end end result end
new(params)
click to toggle source
# File lib/questrade_api/rest/balance.rb, line 9 def initialize(params) @account_id = params[:account_id] @raw_body = params[:data] build_data(params[:data]) if @raw_body end
Private Class Methods
parse_balances(account_number, body)
click to toggle source
# File lib/questrade_api/rest/balance.rb, line 46 def self.parse_balances(account_number, body) raw = JSON.parse(body) balances = { per_currency_balances: [], combined_balances: [], sod_per_currency_balances: [], sod_combined_balances: [] } raw['perCurrencyBalances'].each do |balance| balances[:per_currency_balances] << new(account_id: account_number, data: balance) end raw['combinedBalances'].each do |balance| balances[:combined_balances] << new(account_id: account_number, data: balance) end raw['sodPerCurrencyBalances'].each do |balance| balances[:sod_per_currency_balances] << new(account_id: account_number, data: balance) end raw['sodCombinedBalances'].each do |balance| balances[:sod_combined_balances] << new(account_id: account_number, data: balance) end balances end