class DeGiro::GetTransactions

Public Class Methods

new(connection) click to toggle source
# File lib/degiro_client/get_transactions.rb, line 6
def initialize(connection)
  @connection = connection
end

Public Instance Methods

get_transactions(from: (Date.zone.today - (365 * 5)).strftime('%d/%m/%Y'), to: Date.zone.today.strftime('%d/%m/%Y')) click to toggle source
# File lib/degiro_client/get_transactions.rb, line 10
def get_transactions(from: (Date.zone.today - (365 * 5)).strftime('%d/%m/%Y'), to: Date.zone.today.strftime('%d/%m/%Y'))
  params = URI.encode_www_form(fromDate: from, toDate: to)
  parse_transactions(JSON.parse(@connection.get(url(params)).body))
end

Private Instance Methods

parse_transactions(response) click to toggle source
# File lib/degiro_client/get_transactions.rb, line 17
def parse_transactions(response)
  response['data']
    .sort_by { |transaction| transaction['date'] }
    .reverse
    .map do |transaction|
      {
        id:         transaction['id'],
        type:       transaction['buysell'],
        size:       transaction['quantity'].abs,
        price:      transaction['price'],
        product_id: transaction['productId'].to_s
      }
    end
end
url(params) click to toggle source
# File lib/degiro_client/get_transactions.rb, line 32
def url(params)
  "#{@connection.urls_map['reporting_url']}/v4/transactions" \
  '?orderId=&product=&groupTransactionsByOrder=false' \
  "&intAccount=#{@connection.user_data['int_account']}" \
  "&sessionId=#{@connection.session_id}" \
  "&#{params}"
end