peddler 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +14 -6
- data/lib/peddler/api.rb +28 -13
- data/lib/peddler/{api → apis}/amazon_warehousing_and_distribution_2024_05_09.rb +5 -5
- data/lib/peddler/{api → apis}/aplus_content_2020_11_01.rb +12 -12
- data/lib/peddler/{api → apis}/application_integrations_2024_04_01.rb +5 -5
- data/lib/peddler/{api → apis}/application_management_2023_11_30.rb +3 -3
- data/lib/peddler/{api → apis}/catalog_items_2020_12_01.rb +4 -4
- data/lib/peddler/{api → apis}/catalog_items_2022_04_01.rb +5 -5
- data/lib/peddler/{api → apis}/catalog_items_v0.rb +5 -5
- data/lib/peddler/{api → apis}/data_kiosk_2023_11_15.rb +7 -7
- data/lib/peddler/{api → apis}/easy_ship_2022_03_23.rb +20 -21
- data/lib/peddler/{api → apis}/fba_inbound_eligibility_v1.rb +3 -3
- data/lib/peddler/{api → apis}/fba_inventory_v1.rb +6 -6
- data/lib/peddler/{api → apis}/feeds_2021_06_30.rb +12 -9
- data/lib/peddler/{api → apis}/finances_2024_06_19.rb +3 -3
- data/lib/peddler/apis/finances_v0.rb +135 -0
- data/lib/peddler/{api → apis}/fulfillment_inbound_2024_03_20.rb +84 -54
- data/lib/peddler/{api → apis}/fulfillment_inbound_v0.rb +27 -20
- data/lib/peddler/{api → apis}/fulfillment_outbound_2020_07_01.rb +16 -16
- data/lib/peddler/{api → apis}/invoices_2024_06_19.rb +9 -9
- data/lib/peddler/{api → apis}/listings_items_2020_09_01.rb +5 -5
- data/lib/peddler/{api → apis}/listings_items_2021_08_01.rb +7 -41
- data/lib/peddler/{api → apis}/listings_restrictions_2021_08_01.rb +3 -3
- data/lib/peddler/{api → apis}/merchant_fulfillment_v0.rb +14 -14
- data/lib/peddler/{api → apis}/messaging_v1.rb +15 -15
- data/lib/peddler/{api → apis}/notifications_v1.rb +10 -10
- data/lib/peddler/{api → apis}/orders_v0.rb +13 -13
- data/lib/peddler/{api → apis}/product_fees_v0.rb +5 -5
- data/lib/peddler/{api → apis}/product_pricing_2022_05_01.rb +8 -8
- data/lib/peddler/{api → apis}/product_pricing_v0.rb +8 -8
- data/lib/peddler/{api → apis}/product_type_definitions_2020_09_01.rb +4 -4
- data/lib/peddler/{api → apis}/replenishment_2022_11_07.rb +5 -5
- data/lib/peddler/{api → apis}/reports_2021_06_30.rb +12 -12
- data/lib/peddler/{api → apis}/sales_v1.rb +3 -3
- data/lib/peddler/{api → apis}/sellers_v1.rb +4 -4
- data/lib/peddler/{api → apis}/services_v1.rb +19 -19
- data/lib/peddler/{api → apis}/shipment_invoicing_v0.rb +5 -5
- data/lib/peddler/{api → apis}/shipping_v1.rb +11 -11
- data/lib/peddler/{api → apis}/shipping_v2.rb +19 -19
- data/lib/peddler/{api → apis}/solicitations_v1.rb +4 -4
- data/lib/peddler/{api → apis}/supply_sources_2020_07_01.rb +8 -8
- data/lib/peddler/{api → apis}/tokens_2021_03_01.rb +3 -3
- data/lib/peddler/{api → apis}/uploads_2020_11_01.rb +3 -3
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_inventory_v1.rb +4 -4
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_orders_2021_12_28.rb +5 -5
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_orders_v1.rb +6 -6
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_payments_v1.rb +4 -4
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_sandbox_test_data_2021_10_28.rb +9 -9
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_shipping_2021_12_28.rb +17 -17
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_shipping_v1.rb +30 -30
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_transactions_2021_12_28.rb +4 -4
- data/lib/peddler/{api → apis}/vendor_direct_fulfillment_transactions_v1.rb +4 -4
- data/lib/peddler/{api → apis}/vendor_invoices_v1.rb +4 -4
- data/lib/peddler/{api → apis}/vendor_orders_v1.rb +7 -7
- data/lib/peddler/{api → apis}/vendor_shipments_v1.rb +6 -6
- data/lib/peddler/{api → apis}/vendor_transaction_status_v1.rb +3 -3
- data/lib/peddler/endpoint.rb +2 -2
- data/lib/peddler/error.rb +21 -12
- data/lib/peddler/helpers/feeds_2021_06_30.rb +26 -0
- data/lib/peddler/json_feed_document.rb +31 -0
- data/lib/peddler/marketplace.rb +46 -2
- data/lib/peddler/response.rb +46 -0
- data/lib/peddler/version.rb +1 -1
- data/lib/peddler.rb +54 -55
- metadata +59 -56
- data/lib/peddler/api/finances_v0.rb +0 -148
| @@ -5,11 +5,11 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_direct_fulfillment_shipping_2021_12_28(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorDirectFulfillmentShipping20211228.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              module APIs
         | 
| 13 13 | 
             
                # Selling Partner API for Direct Fulfillment Shipping
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Direct Fulfillment Shipping provides programmatic access to a direct fulfillment
         | 
| @@ -31,7 +31,7 @@ module Peddler | |
| 31 31 | 
             
                  # @param next_token [String] Used for pagination when there are more ship labels than the specified result size
         | 
| 32 32 | 
             
                  #   limit. The token value is returned in the previous API call.
         | 
| 33 33 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 34 | 
            -
                  # @return [ | 
| 34 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 35 35 | 
             
                  def get_shipping_labels(created_after, created_before, ship_from_party_id: nil, limit: nil, sort_order: "ASC",
         | 
| 36 36 | 
             
                    next_token: nil, rate_limit: 10.0)
         | 
| 37 37 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/shippingLabels"
         | 
| @@ -50,9 +50,9 @@ module Peddler | |
| 50 50 | 
             
                  # Creates a shipping label for a purchase order and returns a transactionId for reference.
         | 
| 51 51 | 
             
                  #
         | 
| 52 52 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 53 | 
            -
                  # @param body [Hash] Request body  | 
| 53 | 
            +
                  # @param body [Hash] Request body containing the shipping labels data.
         | 
| 54 54 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 55 | 
            -
                  # @return [ | 
| 55 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 56 56 | 
             
                  def submit_shipping_label_request(body, rate_limit: 10.0)
         | 
| 57 57 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/shippingLabels"
         | 
| 58 58 |  | 
| @@ -62,10 +62,10 @@ module Peddler | |
| 62 62 | 
             
                  # Returns a shipping label for the purchaseOrderNumber that you specify.
         | 
| 63 63 | 
             
                  #
         | 
| 64 64 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 65 | 
            -
                  # @param purchase_order_number [String] The purchase order number for which you want to return the shipping label | 
| 66 | 
            -
                  #    | 
| 65 | 
            +
                  # @param purchase_order_number [String] The purchase order number for which you want to return the shipping label
         | 
| 66 | 
            +
                  #   and should be the same purchaseOrderNumber as received in the order.
         | 
| 67 67 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 68 | 
            -
                  # @return [ | 
| 68 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 69 69 | 
             
                  def get_shipping_label(purchase_order_number, rate_limit: 10.0)
         | 
| 70 70 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/shippingLabels/#{purchase_order_number}"
         | 
| 71 71 |  | 
| @@ -77,9 +77,9 @@ module Peddler | |
| 77 77 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 78 78 | 
             
                  # @param purchase_order_number [String] The purchase order number for which you want to return the shipping
         | 
| 79 79 | 
             
                  #   labels. It should be the same purchaseOrderNumber as received in the order.
         | 
| 80 | 
            -
                  # @param body [Hash] The request payload  | 
| 80 | 
            +
                  # @param body [Hash] The request payload containing parameters for creating shipping labels.
         | 
| 81 81 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 82 | 
            -
                  # @return [ | 
| 82 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 83 83 | 
             
                  def create_shipping_labels(purchase_order_number, body, rate_limit: 10.0)
         | 
| 84 84 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/shippingLabels/#{purchase_order_number}"
         | 
| 85 85 |  | 
| @@ -91,7 +91,7 @@ module Peddler | |
| 91 91 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 92 92 | 
             
                  # @param body [Hash] Request body containing the shipment confirmations data.
         | 
| 93 93 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 94 | 
            -
                  # @return [ | 
| 94 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 95 95 | 
             
                  def submit_shipment_confirmations(body, rate_limit: 10.0)
         | 
| 96 96 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/shipmentConfirmations"
         | 
| 97 97 |  | 
| @@ -103,9 +103,9 @@ module Peddler | |
| 103 103 | 
             
                  # order, when the package is outside of Amazon Network visibility.
         | 
| 104 104 | 
             
                  #
         | 
| 105 105 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 106 | 
            -
                  # @param body [Hash] Request body  | 
| 106 | 
            +
                  # @param body [Hash] Request body containing the shipment status update data.
         | 
| 107 107 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 108 | 
            -
                  # @return [ | 
| 108 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 109 109 | 
             
                  def submit_shipment_status_updates(body, rate_limit: 10.0)
         | 
| 110 110 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/shipmentStatusUpdates"
         | 
| 111 111 |  | 
| @@ -128,7 +128,7 @@ module Peddler | |
| 128 128 | 
             
                  # @param next_token [String] Used for pagination when there are more orders than the specified result size limit.
         | 
| 129 129 | 
             
                  #   The token value is returned in the previous API call.
         | 
| 130 130 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 131 | 
            -
                  # @return [ | 
| 131 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 132 132 | 
             
                  def get_customer_invoices(created_after, created_before, ship_from_party_id: nil, limit: nil, sort_order: nil,
         | 
| 133 133 | 
             
                    next_token: nil, rate_limit: 10.0)
         | 
| 134 134 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/customerInvoices"
         | 
| @@ -149,7 +149,7 @@ module Peddler | |
| 149 149 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 150 150 | 
             
                  # @param purchase_order_number [String] Purchase order number of the shipment for which to return the invoice.
         | 
| 151 151 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 152 | 
            -
                  # @return [ | 
| 152 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 153 153 | 
             
                  def get_customer_invoice(purchase_order_number, rate_limit: 10.0)
         | 
| 154 154 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/customerInvoices/#{purchase_order_number}"
         | 
| 155 155 |  | 
| @@ -171,7 +171,7 @@ module Peddler | |
| 171 171 | 
             
                  # @param next_token [String] Used for pagination when there are more packing slips than the specified result size
         | 
| 172 172 | 
             
                  #   limit. The token value is returned in the previous API call.
         | 
| 173 173 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 174 | 
            -
                  # @return [ | 
| 174 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 175 175 | 
             
                  def get_packing_slips(created_after, created_before, ship_from_party_id: nil, limit: nil, sort_order: "ASC",
         | 
| 176 176 | 
             
                    next_token: nil, rate_limit: 10.0)
         | 
| 177 177 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/packingSlips"
         | 
| @@ -192,7 +192,7 @@ module Peddler | |
| 192 192 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 193 193 | 
             
                  # @param purchase_order_number [String] The purchaseOrderNumber for the packing slip you want.
         | 
| 194 194 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 195 | 
            -
                  # @return [ | 
| 195 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 196 196 | 
             
                  def get_packing_slip(purchase_order_number, rate_limit: 10.0)
         | 
| 197 197 | 
             
                    path = "/vendor/directFulfillment/shipping/2021-12-28/packingSlips/#{purchase_order_number}"
         | 
| 198 198 |  | 
| @@ -5,33 +5,33 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_direct_fulfillment_shipping_v1(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorDirectFulfillmentShippingV1.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              module APIs
         | 
| 13 13 | 
             
                # Selling Partner API for Direct Fulfillment Shipping
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Direct Fulfillment Shipping provides programmatic access to a direct fulfillment
         | 
| 16 16 | 
             
                # vendor's shipping data.
         | 
| 17 17 | 
             
                class VendorDirectFulfillmentShippingV1 < API
         | 
| 18 18 | 
             
                  # Returns a list of shipping labels created during the time frame that you specify. You define that time frame
         | 
| 19 | 
            -
                  # using the  | 
| 20 | 
            -
                  #  | 
| 19 | 
            +
                  # using the createdAfter and createdBefore parameters. You must use both of these parameters. The date range to
         | 
| 20 | 
            +
                  # search must not be more than 7 days.
         | 
| 21 21 | 
             
                  #
         | 
| 22 22 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 23 | 
            -
                  # @param ship_from_party_id [String] The vendor  | 
| 23 | 
            +
                  # @param ship_from_party_id [String] The vendor warehouseId for order fulfillment. If not specified, the result
         | 
| 24 24 | 
             
                  #   will contain orders for all warehouses.
         | 
| 25 25 | 
             
                  # @param limit [Integer] The limit to the number of records returned.
         | 
| 26 26 | 
             
                  # @param created_after [String] Shipping labels that became available after this date and time will be included in
         | 
| 27 | 
            -
                  #   the result. Must be in  | 
| 27 | 
            +
                  #   the result. Must be in ISO-8601 date/time format.
         | 
| 28 28 | 
             
                  # @param created_before [String] Shipping labels that became available before this date and time will be included
         | 
| 29 | 
            -
                  #   in the result. Must be in  | 
| 29 | 
            +
                  #   in the result. Must be in ISO-8601 date/time format.
         | 
| 30 30 | 
             
                  # @param sort_order [String] Sort ASC or DESC by order creation date.
         | 
| 31 31 | 
             
                  # @param next_token [String] Used for pagination when there are more ship labels than the specified result size
         | 
| 32 32 | 
             
                  #   limit. The token value is returned in the previous API call.
         | 
| 33 33 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 34 | 
            -
                  # @return [ | 
| 34 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 35 35 | 
             
                  def get_shipping_labels(created_after, created_before, ship_from_party_id: nil, limit: nil, sort_order: "ASC",
         | 
| 36 36 | 
             
                    next_token: nil, rate_limit: 10.0)
         | 
| 37 37 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/shippingLabels"
         | 
| @@ -47,25 +47,25 @@ module Peddler | |
| 47 47 | 
             
                    meter(rate_limit).get(path, params:)
         | 
| 48 48 | 
             
                  end
         | 
| 49 49 |  | 
| 50 | 
            -
                  # Creates a shipping label for a purchase order and returns a  | 
| 50 | 
            +
                  # Creates a shipping label for a purchase order and returns a transactionId for reference.
         | 
| 51 51 | 
             
                  #
         | 
| 52 52 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 53 53 | 
             
                  # @param body [Hash] Request body containing one or more shipping labels data.
         | 
| 54 54 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 55 | 
            -
                  # @return [ | 
| 55 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 56 56 | 
             
                  def submit_shipping_label_request(body, rate_limit: 10.0)
         | 
| 57 57 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/shippingLabels"
         | 
| 58 58 |  | 
| 59 59 | 
             
                    meter(rate_limit).post(path, body:)
         | 
| 60 60 | 
             
                  end
         | 
| 61 61 |  | 
| 62 | 
            -
                  # Returns a shipping label for the  | 
| 62 | 
            +
                  # Returns a shipping label for the purchaseOrderNumber that you specify.
         | 
| 63 63 | 
             
                  #
         | 
| 64 64 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 65 65 | 
             
                  # @param purchase_order_number [String] The purchase order number for which you want to return the shipping label.
         | 
| 66 | 
            -
                  #   It should be the same  | 
| 66 | 
            +
                  #   It should be the same purchaseOrderNumber as received in the order.
         | 
| 67 67 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 68 | 
            -
                  # @return [ | 
| 68 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 69 69 | 
             
                  def get_shipping_label(purchase_order_number, rate_limit: 10.0)
         | 
| 70 70 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/shippingLabels/#{purchase_order_number}"
         | 
| 71 71 |  | 
| @@ -77,7 +77,7 @@ module Peddler | |
| 77 77 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 78 78 | 
             
                  # @param body [Hash] Request body containing the shipment confirmations data.
         | 
| 79 79 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 80 | 
            -
                  # @return [ | 
| 80 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 81 81 | 
             
                  def submit_shipment_confirmations(body, rate_limit: 10.0)
         | 
| 82 82 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/shipmentConfirmations"
         | 
| 83 83 |  | 
| @@ -91,7 +91,7 @@ module Peddler | |
| 91 91 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 92 92 | 
             
                  # @param body [Hash] Request body containing the shipment status update data.
         | 
| 93 93 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 94 | 
            -
                  # @return [ | 
| 94 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 95 95 | 
             
                  def submit_shipment_status_updates(body, rate_limit: 10.0)
         | 
| 96 96 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/shipmentStatusUpdates"
         | 
| 97 97 |  | 
| @@ -99,22 +99,22 @@ module Peddler | |
| 99 99 | 
             
                  end
         | 
| 100 100 |  | 
| 101 101 | 
             
                  # Returns a list of customer invoices created during a time frame that you specify. You define the time frame
         | 
| 102 | 
            -
                  # using the  | 
| 103 | 
            -
                  #  | 
| 102 | 
            +
                  # using the createdAfter and createdBefore parameters. You must use both of these parameters. The date range to
         | 
| 103 | 
            +
                  # search must be no more than 7 days.
         | 
| 104 104 | 
             
                  #
         | 
| 105 105 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 106 | 
            -
                  # @param ship_from_party_id [String] The vendor  | 
| 106 | 
            +
                  # @param ship_from_party_id [String] The vendor warehouseId for order fulfillment. If not specified, the result
         | 
| 107 107 | 
             
                  #   will contain orders for all warehouses.
         | 
| 108 108 | 
             
                  # @param limit [Integer] The limit to the number of records returned
         | 
| 109 109 | 
             
                  # @param created_after [String] Orders that became available after this date and time will be included in the
         | 
| 110 | 
            -
                  #   result. Must be in  | 
| 110 | 
            +
                  #   result. Must be in ISO-8601 date/time format.
         | 
| 111 111 | 
             
                  # @param created_before [String] Orders that became available before this date and time will be included in the
         | 
| 112 | 
            -
                  #   result. Must be in  | 
| 112 | 
            +
                  #   result. Must be in ISO-8601 date/time format.
         | 
| 113 113 | 
             
                  # @param sort_order [String] Sort ASC or DESC by order creation date.
         | 
| 114 114 | 
             
                  # @param next_token [String] Used for pagination when there are more orders than the specified result size limit.
         | 
| 115 115 | 
             
                  #   The token value is returned in the previous API call.
         | 
| 116 116 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 117 | 
            -
                  # @return [ | 
| 117 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 118 118 | 
             
                  def get_customer_invoices(created_after, created_before, ship_from_party_id: nil, limit: nil, sort_order: nil,
         | 
| 119 119 | 
             
                    next_token: nil, rate_limit: 10.0)
         | 
| 120 120 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/customerInvoices"
         | 
| @@ -130,12 +130,12 @@ module Peddler | |
| 130 130 | 
             
                    meter(rate_limit).get(path, params:)
         | 
| 131 131 | 
             
                  end
         | 
| 132 132 |  | 
| 133 | 
            -
                  # Returns a customer invoice based on the  | 
| 133 | 
            +
                  # Returns a customer invoice based on the purchaseOrderNumber that you specify.
         | 
| 134 134 | 
             
                  #
         | 
| 135 135 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 136 136 | 
             
                  # @param purchase_order_number [String] Purchase order number of the shipment for which to return the invoice.
         | 
| 137 137 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 138 | 
            -
                  # @return [ | 
| 138 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 139 139 | 
             
                  def get_customer_invoice(purchase_order_number, rate_limit: 10.0)
         | 
| 140 140 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/customerInvoices/#{purchase_order_number}"
         | 
| 141 141 |  | 
| @@ -146,18 +146,18 @@ module Peddler | |
| 146 146 | 
             
                  # must not be more than 7 days.
         | 
| 147 147 | 
             
                  #
         | 
| 148 148 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 149 | 
            -
                  # @param ship_from_party_id [String] The vendor  | 
| 149 | 
            +
                  # @param ship_from_party_id [String] The vendor warehouseId for order fulfillment. If not specified the result
         | 
| 150 150 | 
             
                  #   will contain orders for all warehouses.
         | 
| 151 151 | 
             
                  # @param limit [Integer] The limit to the number of records returned
         | 
| 152 152 | 
             
                  # @param created_after [String] Packing slips that became available after this date and time will be included in
         | 
| 153 | 
            -
                  #   the result. Must be in  | 
| 153 | 
            +
                  #   the result. Must be in ISO-8601 date/time format.
         | 
| 154 154 | 
             
                  # @param created_before [String] Packing slips that became available before this date and time will be included in
         | 
| 155 | 
            -
                  #   the result. Must be in  | 
| 155 | 
            +
                  #   the result. Must be in ISO-8601 date/time format.
         | 
| 156 156 | 
             
                  # @param sort_order [String] Sort ASC or DESC by packing slip creation date.
         | 
| 157 157 | 
             
                  # @param next_token [String] Used for pagination when there are more packing slips than the specified result size
         | 
| 158 158 | 
             
                  #   limit. The token value is returned in the previous API call.
         | 
| 159 159 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 160 | 
            -
                  # @return [ | 
| 160 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 161 161 | 
             
                  def get_packing_slips(created_after, created_before, ship_from_party_id: nil, limit: nil, sort_order: "ASC",
         | 
| 162 162 | 
             
                    next_token: nil, rate_limit: 10.0)
         | 
| 163 163 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/packingSlips"
         | 
| @@ -173,12 +173,12 @@ module Peddler | |
| 173 173 | 
             
                    meter(rate_limit).get(path, params:)
         | 
| 174 174 | 
             
                  end
         | 
| 175 175 |  | 
| 176 | 
            -
                  # Returns a packing slip based on the  | 
| 176 | 
            +
                  # Returns a packing slip based on the purchaseOrderNumber that you specify.
         | 
| 177 177 | 
             
                  #
         | 
| 178 178 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 179 | 
            -
                  # @param purchase_order_number [String] The  | 
| 179 | 
            +
                  # @param purchase_order_number [String] The purchaseOrderNumber for the packing slip you want.
         | 
| 180 180 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 181 | 
            -
                  # @return [ | 
| 181 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 182 182 | 
             
                  def get_packing_slip(purchase_order_number, rate_limit: 10.0)
         | 
| 183 183 | 
             
                    path = "/vendor/directFulfillment/shipping/v1/packingSlips/#{purchase_order_number}"
         | 
| 184 184 |  | 
| @@ -5,23 +5,23 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_direct_fulfillment_transactions_2021_12_28(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorDirectFulfillmentTransactions20211228.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              module APIs
         | 
| 13 13 | 
             
                # Selling Partner API for Direct Fulfillment Transaction Status
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Direct Fulfillment Transaction Status provides programmatic access to a direct
         | 
| 16 16 | 
             
                # fulfillment vendor's transaction status.
         | 
| 17 17 | 
             
                class VendorDirectFulfillmentTransactions20211228 < API
         | 
| 18 | 
            -
                  # Returns the status of the transaction indicated by the specified  | 
| 18 | 
            +
                  # Returns the status of the transaction indicated by the specified transactionId.
         | 
| 19 19 | 
             
                  #
         | 
| 20 20 | 
             
                  # @note This operation can make a dynamic sandbox call.
         | 
| 21 21 | 
             
                  # @param transaction_id [String] Previously returned in the response to the POST request of a specific
         | 
| 22 22 | 
             
                  #   transaction.
         | 
| 23 23 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 24 | 
            -
                  # @return [ | 
| 24 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 25 25 | 
             
                  def get_transaction_status(transaction_id, rate_limit: 10.0)
         | 
| 26 26 | 
             
                    path = "/vendor/directFulfillment/transactions/2021-12-28/transactions/#{transaction_id}"
         | 
| 27 27 |  | 
| @@ -5,23 +5,23 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_direct_fulfillment_transactions_v1(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorDirectFulfillmentTransactionsV1.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              module APIs
         | 
| 13 13 | 
             
                # Selling Partner API for Direct Fulfillment Transaction Status
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Direct Fulfillment Transaction Status provides programmatic access to a direct
         | 
| 16 16 | 
             
                # fulfillment vendor's transaction status.
         | 
| 17 17 | 
             
                class VendorDirectFulfillmentTransactionsV1 < API
         | 
| 18 | 
            -
                  # Returns the status of the transaction indicated by the specified  | 
| 18 | 
            +
                  # Returns the status of the transaction indicated by the specified transactionId.
         | 
| 19 19 | 
             
                  #
         | 
| 20 20 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 21 21 | 
             
                  # @param transaction_id [String] Previously returned in the response to the POST request of a specific
         | 
| 22 22 | 
             
                  #   transaction.
         | 
| 23 23 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 24 | 
            -
                  # @return [ | 
| 24 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 25 25 | 
             
                  def get_transaction_status(transaction_id, rate_limit: 10.0)
         | 
| 26 26 | 
             
                    path = "/vendor/directFulfillment/transactions/v1/transactions/#{transaction_id}"
         | 
| 27 27 |  | 
| @@ -5,12 +5,12 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_invoices_v1(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorInvoicesV1.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 13 | 
            -
                #  | 
| 12 | 
            +
              module APIs
         | 
| 13 | 
            +
                # Vendor Invoices v1
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Retail Procurement Payments provides programmatic access to vendors payments data.
         | 
| 16 16 | 
             
                class VendorInvoicesV1 < API
         | 
| @@ -19,7 +19,7 @@ module Peddler | |
| 19 19 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 20 20 | 
             
                  # @param body [Hash] The request body containing the invoice data to submit.
         | 
| 21 21 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 22 | 
            -
                  # @return [ | 
| 22 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 23 23 | 
             
                  def submit_invoices(body, rate_limit: 10.0)
         | 
| 24 24 | 
             
                    path = "/vendor/payments/v1/invoices"
         | 
| 25 25 |  | 
| @@ -5,11 +5,11 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_orders_v1(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorOrdersV1.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              module APIs
         | 
| 13 13 | 
             
                # Selling Partner API for Retail Procurement Orders
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Retail Procurement Orders provides programmatic access to vendor orders data.
         | 
| @@ -47,7 +47,7 @@ module Peddler | |
| 47 47 | 
             
                  #   purchase orders for all of the vendor codes that exist in the vendor group used to authorize the API client
         | 
| 48 48 | 
             
                  #   application are returned.
         | 
| 49 49 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 50 | 
            -
                  # @return [ | 
| 50 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 51 51 | 
             
                  def get_purchase_orders(limit: nil, created_after: nil, created_before: nil, sort_order: nil, next_token: nil,
         | 
| 52 52 | 
             
                    include_details: nil, changed_after: nil, changed_before: nil, po_item_state: nil, is_po_changed: nil,
         | 
| 53 53 | 
             
                    purchase_order_state: nil, ordering_vendor_code: nil, rate_limit: 10.0)
         | 
| @@ -76,7 +76,7 @@ module Peddler | |
| 76 76 | 
             
                  # @param purchase_order_number [String] The purchase order identifier for the order that you want. Formatting
         | 
| 77 77 | 
             
                  #   Notes: 8-character alpha-numeric code.
         | 
| 78 78 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 79 | 
            -
                  # @return [ | 
| 79 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 80 80 | 
             
                  def get_purchase_order(purchase_order_number, rate_limit: 10.0)
         | 
| 81 81 | 
             
                    path = "/vendor/orders/v1/purchaseOrders/#{purchase_order_number}"
         | 
| 82 82 |  | 
| @@ -86,9 +86,9 @@ module Peddler | |
| 86 86 | 
             
                  # Submits acknowledgements for one or more purchase orders.
         | 
| 87 87 | 
             
                  #
         | 
| 88 88 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 89 | 
            -
                  # @param body [Hash]
         | 
| 89 | 
            +
                  # @param body [Hash] Submits acknowledgements for one or more purchase orders from a vendor.
         | 
| 90 90 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 91 | 
            -
                  # @return [ | 
| 91 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 92 92 | 
             
                  def submit_acknowledgement(body, rate_limit: 10.0)
         | 
| 93 93 | 
             
                    path = "/vendor/orders/v1/acknowledgements"
         | 
| 94 94 |  | 
| @@ -130,7 +130,7 @@ module Peddler | |
| 130 130 | 
             
                  #   If not included in filter, this will return purchase orders for all the buyer's warehouses used for vendor
         | 
| 131 131 | 
             
                  #   group purchase orders.
         | 
| 132 132 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 133 | 
            -
                  # @return [ | 
| 133 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 134 134 | 
             
                  def get_purchase_orders_status(limit: nil, sort_order: nil, next_token: nil, created_after: nil,
         | 
| 135 135 | 
             
                    created_before: nil, updated_after: nil, updated_before: nil, purchase_order_number: nil,
         | 
| 136 136 | 
             
                    purchase_order_status: nil, item_confirmation_status: nil, item_receive_status: nil, ordering_vendor_code: nil,
         | 
| @@ -5,12 +5,12 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_shipments_v1(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorShipmentsV1.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 13 | 
            -
                #  | 
| 12 | 
            +
              module APIs
         | 
| 13 | 
            +
                # Vendor Shipments v1
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Retail Procurement Shipments provides programmatic access to retail shipping data for
         | 
| 16 16 | 
             
                # vendors.
         | 
| @@ -20,7 +20,7 @@ module Peddler | |
| 20 20 | 
             
                  # @note This operation can make a static sandbox call.
         | 
| 21 21 | 
             
                  # @param body [Hash] A request to submit shipment confirmation.
         | 
| 22 22 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 23 | 
            -
                  # @return [ | 
| 23 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 24 24 | 
             
                  def submit_shipment_confirmations(body, rate_limit: 10.0)
         | 
| 25 25 | 
             
                    path = "/vendor/shipping/v1/shipmentConfirmations"
         | 
| 26 26 |  | 
| @@ -31,7 +31,7 @@ module Peddler | |
| 31 31 | 
             
                  #
         | 
| 32 32 | 
             
                  # @param body [Hash] A request to submit shipment request.
         | 
| 33 33 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 34 | 
            -
                  # @return [ | 
| 34 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 35 35 | 
             
                  def submit_shipments(body, rate_limit: 10.0)
         | 
| 36 36 | 
             
                    cannot_sandbox!
         | 
| 37 37 |  | 
| @@ -87,7 +87,7 @@ module Peddler | |
| 87 87 | 
             
                  # @param seller_warehouse_code [String] Get Shipping Details based on vendor warehouse code. This value should be
         | 
| 88 88 | 
             
                  #   same as 'sellingParty.partyId' in the Shipment.
         | 
| 89 89 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 90 | 
            -
                  # @return [ | 
| 90 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 91 91 | 
             
                  def get_shipment_details(limit: nil, sort_order: nil, next_token: nil, created_after: nil, created_before: nil,
         | 
| 92 92 | 
             
                    shipment_confirmed_before: nil, shipment_confirmed_after: nil, package_label_created_before: nil,
         | 
| 93 93 | 
             
                    package_label_created_after: nil, shipped_before: nil, shipped_after: nil, estimated_delivery_before: nil,
         | 
| @@ -5,11 +5,11 @@ require "peddler/api" | |
| 5 5 | 
             
            module Peddler
         | 
| 6 6 | 
             
              class << self
         | 
| 7 7 | 
             
                def vendor_transaction_status_v1(...)
         | 
| 8 | 
            -
                   | 
| 8 | 
            +
                  APIs::VendorTransactionStatusV1.new(...)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              module APIs
         | 
| 13 13 | 
             
                # Selling Partner API for Retail Procurement Transaction Status
         | 
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # The Selling Partner API for Retail Procurement Transaction Status provides programmatic access to status
         | 
| @@ -20,7 +20,7 @@ module Peddler | |
| 20 20 | 
             
                  # @param transaction_id [String] The GUID provided by Amazon in the 'transactionId' field in response to the post
         | 
| 21 21 | 
             
                  #   request of a specific transaction.
         | 
| 22 22 | 
             
                  # @param rate_limit [Float] Requests per second
         | 
| 23 | 
            -
                  # @return [ | 
| 23 | 
            +
                  # @return [Peddler::Response] The API response
         | 
| 24 24 | 
             
                  def get_transaction(transaction_id, rate_limit: 10.0)
         | 
| 25 25 | 
             
                    cannot_sandbox!
         | 
| 26 26 |  | 
    
        data/lib/peddler/endpoint.rb
    CHANGED
    
    | @@ -27,14 +27,14 @@ module Peddler | |
| 27 27 | 
             
                      raise ArgumentError, "#{aws_region} not found"
         | 
| 28 28 | 
             
                    end
         | 
| 29 29 |  | 
| 30 | 
            -
                    new(**values | 
| 30 | 
            +
                    new(**values, aws_region: aws_region)
         | 
| 31 31 | 
             
                  end
         | 
| 32 32 |  | 
| 33 33 | 
             
                  def find_by_selling_region(selling_region)
         | 
| 34 34 | 
             
                    aws_region, values = ENDPOINTS.find { |_, v| v[:selling_region] == selling_region } ||
         | 
| 35 35 | 
             
                      raise(ArgumentError, "#{selling_region} not found")
         | 
| 36 36 |  | 
| 37 | 
            -
                    new(**values | 
| 37 | 
            +
                    new(**values, aws_region: aws_region)
         | 
| 38 38 | 
             
                  end
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
    
        data/lib/peddler/error.rb
    CHANGED
    
    | @@ -2,30 +2,39 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Peddler
         | 
| 4 4 | 
             
              class Error < StandardError
         | 
| 5 | 
            -
                 | 
| 6 | 
            -
                class NotFound < Error; end
         | 
| 7 | 
            -
                class QuotaExceeded < Error; end
         | 
| 8 | 
            -
                class Unauthorized < Error; end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                attr_reader :cause
         | 
| 5 | 
            +
                attr_reader :response
         | 
| 11 6 |  | 
| 12 7 | 
             
                # @!visibility private
         | 
| 13 8 | 
             
                class << self
         | 
| 14 9 | 
             
                  def build(response)
         | 
| 15 10 | 
             
                    error = JSON.parse(response).dig("errors").first
         | 
| 16 11 | 
             
                    class_name = error.dig("code")
         | 
| 17 | 
            -
                     | 
| 12 | 
            +
                    message = error.dig("message")
         | 
| 13 | 
            +
                    klass = if Errors.const_defined?(class_name)
         | 
| 14 | 
            +
                      Errors.const_get(class_name)
         | 
| 15 | 
            +
                    else
         | 
| 16 | 
            +
                      Errors.const_set(
         | 
| 17 | 
            +
                        class_name,
         | 
| 18 | 
            +
                        Class.new(Error),
         | 
| 19 | 
            +
                      )
         | 
| 20 | 
            +
                    end
         | 
| 18 21 |  | 
| 19 | 
            -
                    klass.new( | 
| 22 | 
            +
                    klass.new(message, response)
         | 
| 20 23 | 
             
                  rescue NameError
         | 
| 21 | 
            -
                     | 
| 22 | 
            -
                    retry
         | 
| 24 | 
            +
                    # Do nothing if code cannot be converted to a class name
         | 
| 23 25 | 
             
                  end
         | 
| 24 26 | 
             
                end
         | 
| 25 27 |  | 
| 26 | 
            -
                def initialize(msg = nil,  | 
| 27 | 
            -
                  @ | 
| 28 | 
            +
                def initialize(msg = nil, response = nil)
         | 
| 29 | 
            +
                  @response = response
         | 
| 28 30 | 
             
                  super(msg)
         | 
| 29 31 | 
             
                end
         | 
| 30 32 | 
             
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              module Errors
         | 
| 35 | 
            +
                class InvalidInput < Error; end
         | 
| 36 | 
            +
                class NotFound < Error; end
         | 
| 37 | 
            +
                class QuotaExceeded < Error; end
         | 
| 38 | 
            +
                class Unauthorized < Error; end
         | 
| 39 | 
            +
              end
         | 
| 31 40 | 
             
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Peddler
         | 
| 4 | 
            +
              module Helpers
         | 
| 5 | 
            +
                module Feeds20210630
         | 
| 6 | 
            +
                  # Uploads feed_content to a signed upload_url previously provided by
         | 
| 7 | 
            +
                  # create_feed_document. The upload_url is signed, the Host and content-type
         | 
| 8 | 
            +
                  # headers must match the signing.
         | 
| 9 | 
            +
                  # @param upload_url [String] The signed url from the `create_feed_document` response.
         | 
| 10 | 
            +
                  # @param feed_content [String] The body of the content to upload.
         | 
| 11 | 
            +
                  # @param content_type [String] The content type of the upload,
         | 
| 12 | 
            +
                  # this must match the content-type requested in `create_feed_document`
         | 
| 13 | 
            +
                  # @return [HTTP::Response] The API response
         | 
| 14 | 
            +
                  def upload_feed_document(upload_url, feed_content, content_type)
         | 
| 15 | 
            +
                    response = HTTP.headers("content-type" => content_type).put(upload_url, body: feed_content)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    if response.status.client_error?
         | 
| 18 | 
            +
                      error = Error.build(response)
         | 
| 19 | 
            +
                      raise error if error
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    response
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Peddler
         | 
| 4 | 
            +
              class JSONFeedDocument
         | 
| 5 | 
            +
                CONTENT_TYPE = "application/json; charset=UTF-8"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def upload(content)
         | 
| 8 | 
            +
                  # While HTTPrb already sets the content-type, Amazon server seems to fail if we don't explicitly set it again
         | 
| 9 | 
            +
                  # here. A bit of a mystery; maybe it's the order of the headers that's screwing things up on their end?
         | 
| 10 | 
            +
                  HTTP.headers("Content-Type" => CONTENT_TYPE).put(url, json: content)
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def initialize(api)
         | 
| 14 | 
            +
                  @api = api
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def id
         | 
| 18 | 
            +
                  metadata.fetch("id")
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def url
         | 
| 22 | 
            +
                  metadata.fetch("url")
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                private
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def metadata
         | 
| 28 | 
            +
                  @metadata ||= @api.create_feed_document({ "contentType" => CONTENT_TYPE }).parse
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         |