Class: Lipseys::Order

Inherits:
Base
  • Object
show all
Includes:
API
Defined in:
lib/lipseys/order.rb

Constant Summary collapse

SUBMIT_TO_STORE_ATTRS =
{
  permitted: %i( po_number disable_email items item_no quantity note ).freeze,
  required:  %i( po_number items item_no quantity ).freeze
}
SUBMIT_TO_DROP_SHIP_ATTRS =
{
  permitted: %i(
    warehouse po_number billing_name billing_address_line_1 billing_address_line_2 billing_address_city
    billing_address_state billing_address_zip shipping_name shipping_address_line_1 shipping_address_line_2
    shipping_address_city shipping_address_state shipping_address_zip message_for_sales_exec disable_email
    items item_no quantity note overnight
  ).freeze,
  required: %i(
    po_number billing_name billing_address_line_1 billing_address_city billing_address_state billing_address_zip
    shipping_name shipping_address_line_1 shipping_address_city shipping_address_state shipping_address_zip
    items item_no quantity
  ).freeze
}
SUBMIT_TO_DROP_SHIP_FIREARM_ATTRS =
{
  permitted: %i( ffl po name phone delay_shipping disable_email items item_no quantity note ).freeze,
  required:  %i( ffl po name phone items item_no quantity ).freeze
}
ENDPOINTS =
{
  submit_to_store:             "order/apiorder".freeze,
  submit_to_drop_ship:         "order/dropship".freeze,
  submit_to_drop_ship_firearm: "order/dropshipfirearm".freeze,
}

Constants included from API

API::FILE_UPLOAD_ATTRS, API::ROOT_API_URL, API::USER_AGENT

Instance Method Summary collapse

Methods included from API

#get_request, #post_file_request, #post_request

Constructor Details

#initialize(client) ⇒ Order

Returns a new instance of Order.



38
39
40
# File 'lib/lipseys/order.rb', line 38

def initialize(client)
  @client = client
end

Instance Method Details

#submit_to_drop_ship(order_data) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/lipseys/order.rb', line 57

def submit_to_drop_ship(order_data)
  requires!(order_data, *SUBMIT_TO_DROP_SHIP_ATTRS[:required])

  endpoint = ENDPOINTS[:submit_to_drop_ship]
  order_data = standardize_body_data(order_data, SUBMIT_TO_DROP_SHIP_ATTRS[:permitted])

  headers = [
    *auth_header(@client.access_token),
    *content_type_header('application/json'),
  ].to_h

  post_request(endpoint, order_data, headers)

end

#submit_to_drop_ship_firearm(order_data) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/lipseys/order.rb', line 72

def submit_to_drop_ship_firearm(order_data)
  requires!(order_data, *SUBMIT_TO_DROP_SHIP_FIREARM_ATTRS[:required])

  endpoint = ENDPOINTS[:submit_to_drop_ship_firearm]
  order_data = standardize_body_data(order_data, SUBMIT_TO_DROP_SHIP_FIREARM_ATTRS[:permitted])

  headers = [
    *auth_header(@client.access_token),
    *content_type_header('application/json'),
  ].to_h

  post_request(endpoint, order_data, headers)

end

#submit_to_store(order_data) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/lipseys/order.rb', line 42

def submit_to_store(order_data)
  requires!(order_data, *SUBMIT_TO_STORE_ATTRS[:required])

  endpoint = ENDPOINTS[:submit_to_store]
  order_data = standardize_body_data(order_data, SUBMIT_TO_STORE_ATTRS[:permitted])

  headers = [
    *auth_header(@client.access_token),
    *content_type_header('application/json'),
  ].to_h

  post_request(endpoint, order_data, headers)

end