Class: GunBroker::User::OrdersDelegate

Inherits:
Object
  • Object
show all
Includes:
Order::Constants, TokenHeader
Defined in:
lib/gun_broker/user/orders_delegate.rb

Overview

Used to scope Order actions by GunBroker::User.

Constant Summary

Constants included from Order::Constants

Order::Constants::ACCEPTED_FLAG_KEYS, Order::Constants::SHIPPING_CARRIERS

Instance Method Summary collapse

Constructor Details

#initialize(user) ⇒ OrdersDelegate

Returns a new instance of OrdersDelegate.

Parameters:



13
14
15
# File 'lib/gun_broker/user/orders_delegate.rb', line 13

def initialize(user)
  @user = user
end

Instance Method Details

#find(order_id) ⇒ Order

Finds a specific User's Order by ID. Calls Order.find to get full Order details.

Returns:

  • (Order)

    Returns the Order or nil if no Order found.



20
21
22
# File 'lib/gun_broker/user/orders_delegate.rb', line 20

def find(order_id)
  GunBroker::Order.find(order_id, {}, token_header(@user.token))
end

#find!(order_id) ⇒ Order

Same as #find but raises GunBroker::Error::NotFound if no order is found.

Returns:

  • (Order)

    Returns the Order.

Raises:



27
28
29
30
31
# File 'lib/gun_broker/user/orders_delegate.rb', line 27

def find!(order_id)
  order = find(order_id)
  raise GunBroker::Error::NotFound.new("Couldn't find order with ID '#{order_id}'") if order.nil?
  order
end

#set_flags!(order_id, flags = {}) ⇒ GunBroker::Order

Sets any of 3 available Order flags.

Parameters:

  • order_id (Integer, String)

    ID of the Order to update.

  • flags (hash) (defaults to: {})

    Keys with boolean values of flags to update on Order.

Returns:

Raises:



79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/gun_broker/user/orders_delegate.rb', line 79

def set_flags!(order_id, flags = {})
  unless flags.keys.all? { |k| ACCEPTED_FLAG_KEYS.include?(k) }
    raise ArgumentError.new("Only accepted keys for flag toggling are #{ACCEPTED_FLAG_KEYS.to_sentence}")
  end

  params = {
    'PaymentReceived' => flags[:payment_received],
    'FFLReceived'     => flags[:ffl_received],
    'OrderShipped'    => flags[:order_shipped],
  }

  GunBroker::API.put("/Orders/#{order_id}/Flags", cleanup_nil_params(params), token_header(@user.token))
  find!(order_id)
end

#sold(options = {}) ⇒ Array<Order>

Note:

GET /OrdersSold

Sold Orders for the User.

Parameters:

  • options (Hash) (defaults to: {})

    ItemID=>ItemID

Returns:



37
38
39
40
41
42
43
44
# File 'lib/gun_broker/user/orders_delegate.rb', line 37

def sold(options = {})
  params = [
    *params_for(:timeframe),
    *params_for(:itemid, options)
  ].to_h

  @sold ||= fetch_orders(:OrdersSold, params)
end

#submit_shipping(*args) ⇒ GunBroker::Order

Submits shipping details for an Order.

Parameters:

  • order_id (Integer, String)

    ID of the Order to update.

  • tracking_number (String)

    The tracking number of the shipment.

  • carrier_name (String)

    The name of the carrier of the shipment.

Returns:



49
50
51
52
53
# File 'lib/gun_broker/user/orders_delegate.rb', line 49

def submit_shipping(*args)
  submit_shipping!(*args)
rescue GunBroker::Error
  false
end

#submit_shipping!(order_id, tracking_number, carrier_name) ⇒ GunBroker::Order

Same as #submit_shipping but raises exceptions on error.

Parameters:

  • order_id (Integer, String)

    ID of the Order to update.

  • tracking_number (String)

    The tracking number of the shipment.

  • carrier_name (String)

    The name of the carrier of the shipment.

Returns:

Raises:



62
63
64
65
66
67
68
69
70
71
# File 'lib/gun_broker/user/orders_delegate.rb', line 62

def submit_shipping!(order_id, tracking_number, carrier_name)
  carrier_key = SHIPPING_CARRIERS.find { |k, v| v.casecmp(carrier_name).zero? }.try(:first)
  params = {
    'TrackingNumber' => tracking_number,
    'Carrier'        => carrier_key,
  }

  GunBroker::API.put("/Orders/#{order_id}/Shipping", cleanup_nil_params(params), token_header(@user.token))
  find!(order_id)
end