class GunBroker::User::OrdersAsPagesDelegate
Used to scope {OrdersAsPage} actions by {User}.
Public Class Methods
new(user, options = {})
click to toggle source
@param user [User] A {User} instance to scope order pages by. @param options [Hash] { orders_per_page => <number of desired orders per page> (Integer) }.
# File lib/gun_broker/user/orders_as_pages_delegate.rb, line 12 def initialize(user, options = {}) max_page_size = GunBroker::API::PAGE_SIZE @user = user @orders_per_page = options.fetch(:orders_per_page, max_page_size) if @orders_per_page > max_page_size raise ArgumentError.new("`orders_per_page` may not exceed #{max_page_size}") end end
Public Instance Methods
sold()
click to toggle source
Returns pages for orders the User
has sold. @note {API#get! GET} /OrdersSold @return [Array<OrdersAsPage>]
# File lib/gun_broker/user/orders_as_pages_delegate.rb, line 25 def sold @sold ||= build_pages_for(:OrdersSold, { 'TimeFrame' => GunBroker::API::MAX_ORDERS_TIME_FRAME }) end
Private Instance Methods
build_pages_for(endpoint, params = {})
click to toggle source
# File lib/gun_broker/user/orders_as_pages_delegate.rb, line 31 def build_pages_for(endpoint, params = {}) endpoint = ['/', endpoint.to_s].join _token_header = token_header(@user.token) response = GunBroker::API.get(endpoint, params.merge({ 'PageSize' => 1 }), _token_header) number_of_pages = (response['count'] / @orders_per_page.to_f).ceil orders_as_pages = [] number_of_pages.times do |page_number| page_number += 1 attrs = { page_size: @orders_per_page, page_index: page_number, endpoint: endpoint, params: params, token_header: _token_header } orders_as_pages << GunBroker::OrdersAsPage.new(attrs) end orders_as_pages end