Method: CatalogAPI::Order.list

Defined in:
lib/catalogapi/order.rb

.list(options = {}, request = nil) ⇒ Array[CatalogAPI::Order]

Return all orders placed by that user.

Options Hash (options):

  • :external_user_id (String)

    external user id used placing the order

  • :page (String)

    page number of results to return when there are more than per_page results.

  • :per_page (String)

    number of orders to return. Defaults to 10. Can be increased to a maximum of 50.

  • :paginated (String)

    return all orders by paginating over all pages

Raises:



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

def list(options = {}, request = nil)
  external_user_id = options[:external_user_id]
  raise CatalogAPI::Error, 'No External User ID' if external_user_id.nil?

  request ||= CatalogAPI.request.new(:order_list)
  request = request.get(options.merge(external_user_id: external_user_id))
  orders = request.json.dig(
    :order_list_response, :order_list_result, :orders, :OrderSummary
  ).to_a
  request.data += orders.map { |item| CatalogAPI::Order.new(item.merge(external_user_id: external_user_id)) }
  # Pagination
  next_page = options[:paginated] ? request.next_page : nil
  request = list(options.merge(page: next_page), request) if next_page
  request
end