require 'questrade_api/rest/base'

module QuestradeApi
  module REST
    class Position < QuestradeApi::REST::Base
      attr_accessor :account_id

      def initialize(params)
        @account_id = params[:account_id]

        @raw_body = params[:data]
        build_data(params[:data]) if @raw_body
      end

      def self.fetch(authorization, )
        response = super(access_token: authorization.access_token,
                         endpoint: endpoint(),
                         url: authorization.url)

        result = OpenStruct.new(positions: [])

        if response.status == 200
          result.positions = parse_positions(, response.body)
        end

        result
      end

      def self.endpoint()
        "#{BASE_ENDPOINT}/accounts/#{}/positions"
      end

      def self.parse_positions(, body)
        raw = JSON.parse(body)

        positions = []

        raw['positions'].each do |position|
          positions << new(account_id: , data: position)
        end

        positions
      end

      private_class_method :parse_positions
    end
  end
end