peddler 0.6.5 → 0.7.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.
Files changed (220) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +62 -81
  4. data/lib/mws/cart_information.rb +13 -0
  5. data/lib/mws/customer_information.rb +16 -0
  6. data/lib/mws/feeds.rb +110 -1
  7. data/lib/mws/fulfillment_inbound_shipment.rb +13 -1
  8. data/lib/mws/fulfillment_inventory.rb +15 -1
  9. data/lib/mws/fulfillment_outbound_shipment.rb +17 -1
  10. data/lib/mws/off_amazon_payments.rb +15 -1
  11. data/lib/mws/orders.rb +100 -1
  12. data/lib/mws/products.rb +238 -1
  13. data/lib/mws/recommendations.rb +13 -1
  14. data/lib/mws/reports.rb +221 -1
  15. data/lib/mws/sellers.rb +40 -1
  16. data/lib/mws/subscriptions.rb +175 -1
  17. data/lib/peddler/client.rb +77 -37
  18. data/lib/peddler/csv_parser.rb +42 -0
  19. data/lib/peddler/operation.rb +44 -0
  20. data/lib/peddler/parser.rb +21 -0
  21. data/lib/peddler/structured_list.rb +22 -0
  22. data/lib/peddler/version.rb +1 -1
  23. data/lib/peddler/xml_parser.rb +25 -0
  24. data/lib/peddler.rb +2 -0
  25. data/test/helper.rb +1 -1
  26. data/test/integration/test_feeds.rb +18 -0
  27. data/test/integration/test_orders.rb +22 -0
  28. data/test/integration/test_products.rb +53 -0
  29. data/test/integration/test_reports.rb +47 -0
  30. data/test/integration/test_sellers.rb +18 -0
  31. data/test/integration/test_subscriptions.rb +26 -0
  32. data/test/integration_helper.rb +41 -8
  33. data/test/mws.yml +32 -0
  34. data/test/mws.yml.example +4 -0
  35. data/test/unit/peddler/test_client.rb +97 -0
  36. data/test/unit/peddler/test_csv_parser.rb +24 -0
  37. data/test/unit/peddler/test_operation.rb +34 -0
  38. data/test/{peddler/request → unit/peddler}/test_structured_list.rb +5 -5
  39. data/test/unit/peddler/test_xml_parser.rb +19 -0
  40. data/test/{test_peddler.rb → unit/test_peddler.rb} +2 -2
  41. data/test/vcr_cassettes/Feeds.yml +695 -0
  42. data/test/vcr_cassettes/Orders.yml +29855 -0
  43. data/test/vcr_cassettes/Products.yml +8597 -0
  44. data/test/vcr_cassettes/Reports.yml +1881 -0
  45. data/test/vcr_cassettes/Sellers.yml +697 -0
  46. data/test/vcr_cassettes/Subscriptions.yml +1369 -0
  47. metadata +91 -297
  48. data/lib/mws/feeds/client.rb +0 -116
  49. data/lib/mws/feeds/parsers/feed.rb +0 -14
  50. data/lib/mws/feeds/parsers/feed_submission_count.rb +0 -10
  51. data/lib/mws/feeds/parsers/feed_submission_info.rb +0 -25
  52. data/lib/mws/feeds/parsers/feed_submission_list.rb +0 -23
  53. data/lib/mws/feeds/parsers/feed_submission_result.rb +0 -10
  54. data/lib/mws/feeds/parsers/feed_submissions.rb +0 -18
  55. data/lib/mws/feeds/requests/feed.rb +0 -38
  56. data/lib/mws/feeds/requests/feed_submission_count.rb +0 -20
  57. data/lib/mws/feeds/requests/feed_submission_list.rb +0 -30
  58. data/lib/mws/feeds/requests/feed_submission_result.rb +0 -18
  59. data/lib/mws/feeds/requests/feed_submissions.rb +0 -20
  60. data/lib/mws/fulfillment_inbound_shipment/client.rb +0 -7
  61. data/lib/mws/fulfillment_inventory/client.rb +0 -7
  62. data/lib/mws/fulfillment_outbound_shipment/client.rb +0 -7
  63. data/lib/mws/off_amazon_payments/client.rb +0 -7
  64. data/lib/mws/orders/client.rb +0 -98
  65. data/lib/mws/orders/parsers/invoice_data.rb +0 -25
  66. data/lib/mws/orders/parsers/order.rb +0 -113
  67. data/lib/mws/orders/parsers/order_item.rb +0 -110
  68. data/lib/mws/orders/parsers/order_items.rb +0 -23
  69. data/lib/mws/orders/parsers/orders.rb +0 -23
  70. data/lib/mws/orders/parsers/payment_execution_detail.rb +0 -20
  71. data/lib/mws/orders/parsers/payment_execution_detail_item.rb +0 -17
  72. data/lib/mws/orders/parsers/service_status.rb +0 -36
  73. data/lib/mws/orders/parsers/service_status_message.rb +0 -17
  74. data/lib/mws/orders/parsers/shipping_address.rb +0 -37
  75. data/lib/mws/orders/requests/order_items.rb +0 -28
  76. data/lib/mws/orders/requests/orders.rb +0 -41
  77. data/lib/mws/orders/requests/service_status.rb +0 -15
  78. data/lib/mws/products/client.rb +0 -7
  79. data/lib/mws/recommendations/client.rb +0 -7
  80. data/lib/mws/reports/client.rb +0 -249
  81. data/lib/mws/reports/parsers/report.rb +0 -10
  82. data/lib/mws/reports/parsers/report_acknowledgements.rb +0 -20
  83. data/lib/mws/reports/parsers/report_count.rb +0 -10
  84. data/lib/mws/reports/parsers/report_info.rb +0 -29
  85. data/lib/mws/reports/parsers/report_list.rb +0 -23
  86. data/lib/mws/reports/parsers/report_request.rb +0 -14
  87. data/lib/mws/reports/parsers/report_request_count.rb +0 -10
  88. data/lib/mws/reports/parsers/report_request_info.rb +0 -49
  89. data/lib/mws/reports/parsers/report_request_list.rb +0 -23
  90. data/lib/mws/reports/parsers/report_requests.rb +0 -18
  91. data/lib/mws/reports/parsers/report_schedule.rb +0 -21
  92. data/lib/mws/reports/parsers/report_schedule_count.rb +0 -10
  93. data/lib/mws/reports/parsers/report_schedule_list.rb +0 -23
  94. data/lib/mws/reports/parsers/report_scheduler.rb +0 -19
  95. data/lib/mws/reports/requests/report.rb +0 -18
  96. data/lib/mws/reports/requests/report_acknowledgements.rb +0 -27
  97. data/lib/mws/reports/requests/report_count.rb +0 -20
  98. data/lib/mws/reports/requests/report_list.rb +0 -30
  99. data/lib/mws/reports/requests/report_request.rb +0 -21
  100. data/lib/mws/reports/requests/report_request_count.rb +0 -20
  101. data/lib/mws/reports/requests/report_request_list.rb +0 -30
  102. data/lib/mws/reports/requests/report_requests.rb +0 -20
  103. data/lib/mws/reports/requests/report_schedule_count.rb +0 -19
  104. data/lib/mws/reports/requests/report_schedule_list.rb +0 -23
  105. data/lib/mws/reports/requests/report_scheduler.rb +0 -29
  106. data/lib/mws/sellers/client.rb +0 -53
  107. data/lib/mws/sellers/parsers/marketplace.rb +0 -33
  108. data/lib/mws/sellers/parsers/marketplace_participations.rb +0 -32
  109. data/lib/mws/sellers/parsers/participation.rb +0 -21
  110. data/lib/mws/sellers/parsers/service_status.rb +0 -36
  111. data/lib/mws/sellers/parsers/service_status_message.rb +0 -17
  112. data/lib/mws/sellers/requests/marketplace_participations.rb +0 -27
  113. data/lib/mws/sellers/requests/service_status.rb +0 -15
  114. data/lib/mws/subscriptions/client.rb +0 -7
  115. data/lib/peddler/parsers/base.rb +0 -15
  116. data/lib/peddler/parsers/collection.rb +0 -23
  117. data/lib/peddler/parsers/counter.rb +0 -13
  118. data/lib/peddler/parsers/model.rb +0 -42
  119. data/lib/peddler/parsers/text.rb +0 -8
  120. data/lib/peddler/parsers/tokenable.rb +0 -13
  121. data/lib/peddler/parsers/xml.rb +0 -30
  122. data/lib/peddler/request/parameters.rb +0 -57
  123. data/lib/peddler/request/structured_list.rb +0 -48
  124. data/lib/peddler/request.rb +0 -52
  125. data/lib/peddler/response/base.rb +0 -0
  126. data/lib/peddler/response/payload/base.rb +0 -0
  127. data/lib/peddler/response/payload/csv.rb +0 -0
  128. data/lib/peddler/response/payload/xml.rb +0 -0
  129. data/lib/peddler/response.rb +0 -27
  130. data/test/fixtures/feeds/feed_submission.xml +0 -14
  131. data/test/fixtures/feeds/feed_submission_count.xml +0 -9
  132. data/test/fixtures/feeds/feed_submission_list.xml +0 -17
  133. data/test/fixtures/feeds/feed_submissions.xml +0 -15
  134. data/test/fixtures/mws.yml +0 -12
  135. data/test/fixtures/mws.yml.example +0 -4
  136. data/test/fixtures/orders/order_items.xml +0 -83
  137. data/test/fixtures/orders/orders.xml +0 -109
  138. data/test/fixtures/orders/service_status.xml +0 -19
  139. data/test/fixtures/reports/report.xml +0 -8
  140. data/test/fixtures/reports/report_acknowledgements.xml +0 -18
  141. data/test/fixtures/reports/report_count.xml +0 -9
  142. data/test/fixtures/reports/report_list.xml +0 -17
  143. data/test/fixtures/reports/report_request_count.xml +0 -9
  144. data/test/fixtures/reports/report_request_list.xml +0 -24
  145. data/test/fixtures/reports/report_requests.xml +0 -19
  146. data/test/fixtures/reports/report_schedule_count.xml +0 -10
  147. data/test/fixtures/reports/report_schedule_list.xml +0 -16
  148. data/test/fixtures/reports/report_scheduler.xml +0 -15
  149. data/test/fixtures/sellers/market_participations.xml +0 -27
  150. data/test/fixtures/sellers/service_status.xml +0 -9
  151. data/test/integration/feeds/test_feed_submission_count.rb +0 -13
  152. data/test/integration/feeds/test_feed_submission_list.rb +0 -17
  153. data/test/integration/feeds/test_feed_submission_result.rb +0 -15
  154. data/test/integration/orders/test_order_items.rb +0 -19
  155. data/test/integration/orders/test_orders.rb +0 -23
  156. data/test/integration/orders/test_service_status.rb +0 -12
  157. data/test/integration/reports/test_report.rb +0 -15
  158. data/test/integration/reports/test_report_count.rb +0 -13
  159. data/test/integration/reports/test_report_list.rb +0 -17
  160. data/test/integration/reports/test_report_request_count.rb +0 -13
  161. data/test/integration/reports/test_report_request_list.rb +0 -17
  162. data/test/integration/reports/test_report_schedule_count.rb +0 -13
  163. data/test/integration/reports/test_report_schedule_list.rb +0 -13
  164. data/test/integration/reports/test_report_scheduler.rb +0 -16
  165. data/test/integration/sellers/test_marketplace_participations.rb +0 -13
  166. data/test/integration/sellers/test_service_status.rb +0 -12
  167. data/test/mws/feeds/parsers/test_feed.rb +0 -13
  168. data/test/mws/feeds/parsers/test_feed_submission_count.rb +0 -13
  169. data/test/mws/feeds/parsers/test_feed_submission_info.rb +0 -25
  170. data/test/mws/feeds/parsers/test_feed_submission_list.rb +0 -18
  171. data/test/mws/feeds/parsers/test_feed_submission_result.rb +0 -13
  172. data/test/mws/feeds/parsers/test_feed_submissions.rb +0 -17
  173. data/test/mws/feeds/requests/test_feed.rb +0 -63
  174. data/test/mws/feeds/requests/test_feed_submission_count.rb +0 -23
  175. data/test/mws/feeds/requests/test_feed_submission_list.rb +0 -37
  176. data/test/mws/feeds/requests/test_feed_submissions.rb +0 -29
  177. data/test/mws/orders/parsers/test_order.rb +0 -86
  178. data/test/mws/orders/parsers/test_order_item.rb +0 -69
  179. data/test/mws/orders/parsers/test_order_items.rb +0 -18
  180. data/test/mws/orders/parsers/test_orders.rb +0 -18
  181. data/test/mws/orders/parsers/test_payment_execution_detail.rb +0 -14
  182. data/test/mws/orders/parsers/test_payment_execution_detail_item.rb +0 -17
  183. data/test/mws/orders/parsers/test_service_status.rb +0 -39
  184. data/test/mws/orders/parsers/test_service_status_message.rb +0 -17
  185. data/test/mws/orders/parsers/test_shipping_address.rb +0 -36
  186. data/test/mws/orders/requests/test_order_items.rb +0 -36
  187. data/test/mws/orders/requests/test_orders.rb +0 -46
  188. data/test/mws/orders/requests/test_service_status.rb +0 -25
  189. data/test/mws/reports/parsers/test_report_acknowledgments.rb +0 -14
  190. data/test/mws/reports/parsers/test_report_count.rb +0 -13
  191. data/test/mws/reports/parsers/test_report_info.rb +0 -29
  192. data/test/mws/reports/parsers/test_report_list.rb +0 -18
  193. data/test/mws/reports/parsers/test_report_request.rb +0 -13
  194. data/test/mws/reports/parsers/test_report_request_count.rb +0 -13
  195. data/test/mws/reports/parsers/test_report_request_info.rb +0 -49
  196. data/test/mws/reports/parsers/test_report_request_list.rb +0 -18
  197. data/test/mws/reports/parsers/test_report_requests.rb +0 -17
  198. data/test/mws/reports/parsers/test_report_schedule_count.rb +0 -13
  199. data/test/mws/reports/parsers/test_report_schedule_list.rb +0 -18
  200. data/test/mws/reports/parsers/test_report_scheduler.rb +0 -17
  201. data/test/mws/reports/requests/test_acknowledgements.rb +0 -36
  202. data/test/mws/reports/requests/test_report_count.rb +0 -23
  203. data/test/mws/reports/requests/test_report_list.rb +0 -39
  204. data/test/mws/reports/requests/test_report_request.rb +0 -31
  205. data/test/mws/reports/requests/test_report_request_count.rb +0 -23
  206. data/test/mws/reports/requests/test_report_request_list.rb +0 -44
  207. data/test/mws/reports/requests/test_report_requests.rb +0 -29
  208. data/test/mws/reports/requests/test_report_schedule_count.rb +0 -22
  209. data/test/mws/reports/requests/test_report_schedule_list.rb +0 -36
  210. data/test/mws/reports/requests/test_report_scheduler.rb +0 -33
  211. data/test/mws/sellers/parsers/test_market_participations.rb +0 -19
  212. data/test/mws/sellers/parsers/test_service_status.rb +0 -35
  213. data/test/mws/sellers/requests/test_marketplace_participation_list.rb +0 -39
  214. data/test/mws/sellers/requests/test_service_status.rb +0 -25
  215. data/test/parser_helper.rb +0 -11
  216. data/test/peddler/parsers/test_collection.rb +0 -8
  217. data/test/peddler/parsers/test_model.rb +0 -70
  218. data/test/peddler/request/test_parameters.rb +0 -35
  219. data/test/peddler/test_client.rb +0 -42
  220. data/test/request_helper.rb +0 -20
data/lib/mws/products.rb CHANGED
@@ -1 +1,238 @@
1
- require 'mws/products/client'
1
+ require 'peddler/client'
2
+
3
+ module MWS
4
+ # The MWS Products API helps you get information to match your products to
5
+ # existing product listings on Amazon Marketplace websites and to make
6
+ # sourcing and pricing decisions for listing those products on Amazon
7
+ # Marketplace websites.
8
+ class Products < ::Peddler::Client
9
+ path 'Products/2011-10-01'
10
+
11
+ # Lists products and their attributes, based on a search query
12
+ #
13
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_ListMatchingProducts.html
14
+ # @method list_matching_products
15
+ # @overload list_matching_products(query, opts = { marketplace_id: marketplace_id })
16
+ # @param query [String]
17
+ # @param opts [Hash]
18
+ # @option opts [String] :marketplace_id
19
+ # @option opts [String] :query_context_id
20
+ # @return [Peddler::Parser]
21
+ def list_matching_products(query, opts = {})
22
+ opts[:marketplace_id] ||= marketplace_id
23
+
24
+ operation('ListMatchingProducts')
25
+ .add(opts.merge('Query' => query))
26
+
27
+ run
28
+ end
29
+
30
+ # Lists products and their attributes, based on a list of ASIN, GCID,
31
+ # SellerSKU, UPC, EAN, ISBN, and JAN values
32
+ #
33
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMatchingProduct.html
34
+ # @overload get_matching_product_for_id(id_type, *id_list, opts = { marketplace_id: marketplace_id })
35
+ # @param id_type [String]
36
+ # @param id_list [Array<String>]
37
+ # @param opts [Hash]
38
+ # @option opts [String] :marketplace_id
39
+ # @return [Peddler::Parser]
40
+ def get_matching_product_for_id(id_type, *id_list)
41
+ opts = extract_options(id_list)
42
+ opts[:marketplace_id] ||= marketplace_id
43
+
44
+ operation('GetMatchingProductForId')
45
+ .add(opts.merge('IdType' => id_type, 'IdList' => id_list))
46
+ .structure!('IdList', 'Id')
47
+
48
+ run
49
+ end
50
+
51
+ # Lists products and their attributes, based on a list of ASIN values
52
+ #
53
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMatchingProductForId.html
54
+ # @overload get_matching_product(*asins, opts = { marketplace_id: marketplace_id })
55
+ # @param asins [Array<String>]
56
+ # @param opts [Hash]
57
+ # @option opts [String] :marketplace_id
58
+ # @return [Peddler::Parser]
59
+ def get_matching_product(*asins)
60
+ opts = extract_options(asins)
61
+ opts[:marketplace_id] ||= marketplace_id
62
+
63
+ operation('GetMatchingProduct')
64
+ .add(opts.merge('ASINList' => asins))
65
+ .structure!('ASINList', 'ASIN')
66
+
67
+ run
68
+ end
69
+
70
+ # Gets the current competitive price of a product, based on Seller SKU
71
+ #
72
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetCompetitivePricingForSKU.html
73
+ # @overload get_competitive_pricing_for_sku(*skus, opts = { marketplace_id: marketplace_id })
74
+ # @param skus [Array<String>]
75
+ # @param opts [Hash]
76
+ # @option opts [String] :marketplace_id
77
+ # @return [Peddler::Parser]
78
+ def get_competitive_pricing_for_sku(*skus)
79
+ opts = extract_options(skus)
80
+ opts[:marketplace_id] ||= marketplace_id
81
+
82
+ operation('GetCompetitivePricingForSKU')
83
+ .add(opts.merge('SellerSKUList' => skus))
84
+ .structure!('SellerSKUList', 'SellerSKU')
85
+
86
+ run
87
+ end
88
+
89
+ # Gets the current competitive price of a product, identified by its ASIN
90
+ #
91
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetCompetitivePricingForASIN.html
92
+ # @overload get_competitive_pricing_for_asin(*asins, opts = { marketplace_id: marketplace_id })
93
+ # @param asins [Array<String>]
94
+ # @param opts [Hash]
95
+ # @option opts [String] :marketplace_id
96
+ # @return [Peddler::Parser]
97
+ def get_competitive_pricing_for_asin(*asins)
98
+ opts = extract_options(asins)
99
+ opts[:marketplace_id] ||= marketplace_id
100
+
101
+ operation('GetCompetitivePricingForASIN')
102
+ .add(opts.merge('ASINList' => asins))
103
+ .structure!('ASINList', 'ASIN')
104
+
105
+ run
106
+ end
107
+
108
+ # Gets pricing information for the lowest-price active offer listings for a
109
+ # product, based on Seller SKU
110
+ #
111
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetLowestOfferListingsForSKU.html
112
+ # @overload get_lowest_offer_listings_for_sku(*skus, opts = { marketplace_id: marketplace_id })
113
+ # @param skus [Array<String>]
114
+ # @param opts [Hash]
115
+ # @option opts [String] :marketplace_id
116
+ # @option opts [String] :item_condition
117
+ # @option opts [Boolean] :exclude_me
118
+ # @return [Peddler::Parser]
119
+ def get_lowest_offer_listings_for_sku(*skus)
120
+ opts = extract_options(skus)
121
+ opts[:marketplace_id] ||= marketplace_id
122
+
123
+ operation('GetLowestOfferListingsForSKU')
124
+ .add(opts.merge('SellerSKUList' => skus))
125
+ .structure!('SellerSKUList', 'SellerSKU')
126
+
127
+ run
128
+ end
129
+
130
+ # Gets pricing information for the lowest-price active offer listings for a
131
+ # product, identified by its ASIN
132
+ #
133
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetLowestOfferListingsForASIN.html
134
+ # @overload get_lowest_offer_listings_for_asin(*asins, opts = { marketplace_id: marketplace_id })
135
+ # @param asins [Array<String>]
136
+ # @param opts [Hash]
137
+ # @option opts [String] :marketplace_id
138
+ # @option opts [String] :item_condition
139
+ # @option opts [Boolean] :exclude_me
140
+ # @return [Peddler::Parser]
141
+ def get_lowest_offer_listings_for_asin(*asins)
142
+ opts = extract_options(asins)
143
+ opts[:marketplace_id] ||= marketplace_id
144
+
145
+ operation('GetLowestOfferListingsForASIN')
146
+ .add(opts.merge('ASINList' => asins))
147
+ .structure!('ASINList', 'ASIN')
148
+
149
+ run
150
+ end
151
+
152
+ # Gets pricing information for seller's own offer listings, based on Seller
153
+ # SKU
154
+ #
155
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMyPriceForSKU.html
156
+ # @overload get_my_price_for_sku(*skus, opts = { marketplace_id: marketplace_id })
157
+ # @param skus [Array<String>]
158
+ # @param opts [Hash]
159
+ # @option opts [String] :marketplace_id
160
+ # @option opts [String] :item_condition
161
+ # @return [Peddler::Parser]
162
+ def get_my_price_for_sku(*skus)
163
+ opts = extract_options(skus)
164
+ opts[:marketplace_id] ||= marketplace_id
165
+
166
+ operation('GetMyPriceForSKU')
167
+ .add(opts.merge('SellerSKUList' => skus))
168
+ .structure!('SellerSKUList', 'SellerSKU')
169
+
170
+ run
171
+ end
172
+
173
+ # Gets pricing information for seller's own offer listings, identified by
174
+ # its ASIN
175
+ #
176
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMyPriceForASIN.html
177
+ # @overload get_my_price_for_asin(*skus, opts = { marketplace_id: marketplace_id })
178
+ # @param asins [Array<String>]
179
+ # @param opts [Hash]
180
+ # @option opts [String] :marketplace_id
181
+ # @option opts [String] :item_condition
182
+ # @return [Peddler::Parser]
183
+ def get_my_price_for_asin(*asins)
184
+ opts = extract_options(asins)
185
+ opts[:marketplace_id] ||= marketplace_id
186
+
187
+ operation('GetMyPriceForASIN')
188
+ .add(opts.merge('ASINList' => asins))
189
+ .structure!('ASINList', 'ASIN')
190
+
191
+ run
192
+ end
193
+
194
+ # Gets parent product categories that a product belongs to, based on
195
+ # Seller`SKU
196
+ #
197
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetProductCategoriesForSKU.html
198
+ # @overload get_product_categories_for_sku(sku, opts = { marketplace_id: marketplace_id })
199
+ # @param sku [String]
200
+ # @param opts [Hash]
201
+ # @option opts [String] :marketplace_id
202
+ # @return [Peddler::Parser]
203
+ def get_product_categories_for_sku(sku, opts = {})
204
+ opts[:marketplace_id] ||= marketplace_id
205
+
206
+ operation('GetProductCategoriesForSKU')
207
+ .add(opts.merge('SellerSKU' => sku))
208
+
209
+ run
210
+ end
211
+
212
+ # Gets parent product categories that a product belongs to, based on ASIN
213
+ #
214
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetProductCategoriesForASIN.html
215
+ # @overload get_product_categories_for_asin(asin, opts = { marketplace_id: marketplace_id })
216
+ # @param asin [String]
217
+ # @param opts [Hash]
218
+ # @option opts [String] :marketplace_id
219
+ # @return [Peddler::Parser]
220
+ def get_product_categories_for_asin(asin, opts = {})
221
+ opts[:marketplace_id] ||= marketplace_id
222
+
223
+ operation('GetProductCategoriesForASIN')
224
+ .add(opts.merge('ASIN' => asin))
225
+
226
+ run
227
+ end
228
+
229
+ # Gets the service status of the API
230
+ #
231
+ # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetServiceStatus.html
232
+ # @return Peddler::Parser
233
+ def get_service_status
234
+ operation('GetServiceStatus')
235
+ run
236
+ end
237
+ end
238
+ end
@@ -1 +1,13 @@
1
- require 'mws/recommendations/client'
1
+ require 'peddler/client'
2
+
3
+ module MWS
4
+ # The Recommendations API enables you to programmatically retrieve Amazon
5
+ # Selling Coach recommendations by recommendation category. A recommendation
6
+ # is an actionable, timely, and personalized opportunity to increase your
7
+ # sales and performance.
8
+ #
9
+ # @todo Not implemented
10
+ class Recommendations < ::Peddler::Client
11
+ path 'Recommendations/2013-04-01'
12
+ end
13
+ end
data/lib/mws/reports.rb CHANGED
@@ -1 +1,221 @@
1
- require 'mws/reports/client'
1
+ require 'peddler/client'
2
+
3
+ module MWS
4
+ # The Reports API lets you request reports about your inventory and orders.
5
+ class Reports < ::Peddler::Client
6
+ # Creates a report request
7
+ #
8
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_RequestReport.html
9
+ # @param report_type [String]
10
+ # @param opts [Hash]
11
+ # @option opts [String, #iso8601] :start_date
12
+ # @option opts [String, #iso8601] :end_date
13
+ # @option opts [String] :report_options
14
+ # @option opts [Array<String>, String] :marketplace_id
15
+ # @return [Peddler::Parser]
16
+ def request_report(report_type, opts = {})
17
+ operation('RequestReport')
18
+ .add(opts.merge('ReportType' => report_type))
19
+ .structure!('MarketplaceIdList', 'Id')
20
+
21
+ run
22
+ end
23
+
24
+ # Lists report requests
25
+ #
26
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportRequestList.html
27
+ # @param opts [Hash]
28
+ # @option opts [Array<String>, String] :report_request_id_list
29
+ # @option opts [Array<String>, String] :report_type_list
30
+ # @option opts [Array<String>, String] :report_processing_status_list
31
+ # @option opts [Integer] :max_count
32
+ # @option opts [String, #iso8601] :requested_from_date
33
+ # @option opts [String, #iso8601] :requested_to_date
34
+ # @return [Peddler::Parser]
35
+ def get_report_request_list(opts = {})
36
+ operation('GetReportRequestList')
37
+ .add(opts)
38
+ .structure!('ReportRequestIdList', 'Id')
39
+ .structure!('ReportTypeList', 'Type')
40
+ .structure!('ReportProcessingStatusList', 'Status')
41
+
42
+ run
43
+ end
44
+
45
+ # Lists the next page of the report requests
46
+ #
47
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportRequestListByNextToken.html
48
+ # @param next_token [String]
49
+ # @return [Peddler::Parser]
50
+ # @return false if there are no more pages
51
+ def get_report_request_list_by_next_token(next_token)
52
+ operation('GetReportRequestListByNextToken')
53
+ .add('NextToken' => next_token)
54
+
55
+ run
56
+ end
57
+
58
+ # Counts requested reports
59
+ #
60
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportRequestCount.html
61
+ # @param opts [Hash]
62
+ # @option opts [Array<String>, String] :report_type_list
63
+ # @option opts [Array<String>, String] :report_processing_status_list
64
+ # @option opts [String, #iso8601] :requested_from_date
65
+ # @option opts [String, #iso8601] :requested_to_date
66
+ # @return [Peddler::Parser]
67
+ def get_report_request_count(opts = {})
68
+ operation('GetReportRequestCount')
69
+ .add(opts)
70
+ .structure!('ReportTypeList', 'Type')
71
+ .structure!('ReportProcessingStatusList', 'Status')
72
+
73
+ run
74
+ end
75
+
76
+ # Cancels one or more report requests
77
+ #
78
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_CancelReportRequests.html
79
+ # @param opts [Hash]
80
+ # @option opts [Array<String>, String] :report_type_list
81
+ # @option opts [Array<String>, String] :report_processing_status_list
82
+ # @option opts [String, #iso8601] :requested_from_date
83
+ # @option opts [String, #iso8601] :requested_to_date
84
+ # @return [Peddler::Parser]
85
+ def cancel_report_requests(opts = {})
86
+ operation('CancelReportRequests')
87
+ .add(opts)
88
+ .structure!('ReportTypeList', 'Type')
89
+ .structure!('ReportProcessingStatusList', 'Status')
90
+
91
+ run
92
+ end
93
+
94
+ # Lists reports
95
+ #
96
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportList.html
97
+ # @param opts [Hash]
98
+ # @option opts [Integer] :max_count
99
+ # @option opts [Array<String>, String] :report_type_list
100
+ # @option opts [Boolean] :acknowledged
101
+ # @option opts [String, #iso8601] :available_from_date
102
+ # @option opts [String, #iso8601] :available_to_date
103
+ # @option opts [Array<String>, String] :report_request_id_list
104
+ # @return [Peddler::Parser]
105
+ def get_report_list(opts = {})
106
+ operation('GetReportList')
107
+ .add(opts)
108
+ .structure!('ReportTypeList', 'Type')
109
+ .structure!('ReportRequestIdList', 'Id')
110
+
111
+ run
112
+ end
113
+
114
+ # Lists the next page of reports
115
+ #
116
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportListByNextToken.html
117
+ # @param next_token [String]
118
+ # @return [Peddler::Parser]
119
+ # @return false if there are no more pages
120
+ def get_report_list_by_next_token(next_token)
121
+ operation('GetReportListByNextToken')
122
+ .add('NextToken' => next_token)
123
+
124
+ run
125
+ end
126
+
127
+ # Counts reports
128
+ #
129
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportCount.html
130
+ # @param opts [Hash]
131
+ # @option opts [Array<String>, String] :report_type_list
132
+ # @option opts [Boolean] :acknowledged
133
+ # @option opts [String, #iso8601] :available_from_date
134
+ # @option opts [String, #iso8601] :available_to_date
135
+ # @return [Peddler::Parser]
136
+ def get_report_count(opts = {})
137
+ operation('GetReportCount')
138
+ .add(opts)
139
+ .structure!('ReportTypeList', 'Type')
140
+
141
+ run
142
+ end
143
+
144
+ # Gets a report and its Content-MD5 header
145
+ #
146
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReport.html
147
+ # @param report_id [String]
148
+ # @return [Peddler::Parser]
149
+ def get_report(report_id, &blk)
150
+ operation('GetReport')
151
+ .add('ReportId' => report_id)
152
+
153
+ run(&blk)
154
+ end
155
+
156
+
157
+ # Creates, updates, or deletes a report request schedule
158
+ #
159
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_ManageReportSchedule.html
160
+ # @param report_type [String]
161
+ # @param schedule [String]
162
+ # @param opts [Hash]
163
+ # @option opts [String, #iso8601] :schedule_date
164
+ # @return [Peddler::Parser]
165
+ def manage_report_schedule(report_type, schedule, opts = {})
166
+ operation('ManageReportSchedule')
167
+ .add(opts.merge('ReportType' => report_type, 'Schedule' => schedule))
168
+
169
+ run
170
+ end
171
+
172
+ # List scheduled reports
173
+ #
174
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportScheduleList.html
175
+ # @param report_type_list [*Array<String>]
176
+ # @return [Peddler::Parser]
177
+ def get_report_schedule_list(*report_type_list)
178
+ operation('GetReportScheduleList')
179
+ .add('ReportTypeList' => report_type_list)
180
+ .structure!('ReportTypeList', 'Type')
181
+
182
+ run
183
+ end
184
+
185
+ # List next page of scheduled reports
186
+ #
187
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportScheduleListByNextToken.html
188
+ # @param next_token [String]
189
+ # @raise [NotImplementedError]
190
+ def get_report_schedule_list_by_next_token(token = next_token)
191
+ raise NotImplementedError
192
+ end
193
+
194
+ # Count scheduled reports
195
+ #
196
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportScheduleCount.html
197
+ # @param report_type_list [Array<String>]
198
+ # @return [Peddler::Parser]
199
+ def get_report_schedule_count(*report_type_list)
200
+ operation('GetReportScheduleCount')
201
+ .add('ReportTypeList' => report_type_list)
202
+ .structure!('ReportTypeList', 'Type')
203
+
204
+ run
205
+ end
206
+
207
+ # Update acknowledged status of one or more reports
208
+ #
209
+ # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_UpdateReportAcknowledgements.html
210
+ # @param acknowledged [Boolean]
211
+ # @param report_id_list [Array<String>]
212
+ # @return [Peddler::Parser]
213
+ def update_report_acknowledgements(acknowledged, *report_id_list)
214
+ operation('UpdateReportAcknowledgement')
215
+ .add('ReportIdList' => report_id_list, 'Acknowledged' => acknowledged)
216
+ .structure!('ReportIdList', 'Id')
217
+
218
+ run
219
+ end
220
+ end
221
+ end
data/lib/mws/sellers.rb CHANGED
@@ -1 +1,40 @@
1
- require 'mws/sellers/client'
1
+ require 'peddler/client'
2
+
3
+ module MWS
4
+ # The Sellers API lets sellers retrieve information about their seller
5
+ # account, such as the marketplaces they participate in.
6
+ class Sellers < ::Peddler::Client
7
+ path 'Sellers/2011-07-01'
8
+
9
+ # Lists the marketplaces the seller participates in
10
+ #
11
+ # @see http://docs.developer.amazonservices.com/en_US/sellers/Sellers_ListMarketplaceParticipations.html
12
+ # @param next_token [String]
13
+ # @return [Peddler::Parser]
14
+ def list_marketplace_participations
15
+ operation('ListMarketplaceParticipations')
16
+ run
17
+ end
18
+
19
+ # Lists the next page of marketplaces the seller participates in
20
+ #
21
+ # @see http://docs.developer.amazonservices.com/en_US/sellers/Sellers_ListMarketplaceParticipationsByNextToken.html
22
+ # @param next_token [String]
23
+ # @return [Peddler::Parser]
24
+ def list_marketplace_participations_by_next_token(next_token)
25
+ operation('ListMarketplaceParticipationsByNextToken')
26
+ .add('NextToken' => next_token)
27
+
28
+ run
29
+ end
30
+
31
+ # Gets the service status of the API
32
+ #
33
+ # @see http://docs.developer.amazonservices.com/en_US/sellers/MWS_GetServiceStatus.html
34
+ # @return [Peddler::Parser]
35
+ def get_service_status
36
+ operation('GetServiceStatus')
37
+ run
38
+ end
39
+ end
40
+ end
@@ -1 +1,175 @@
1
- require 'mws/subscriptions/client'
1
+ require 'peddler/client'
2
+
3
+ module MWS
4
+ # The Amazon MWS Subscriptions API section enables you to subscribe to
5
+ # receive notifications that are relevant to your business with Amazon. With
6
+ # the operations in the Subscriptions API section, you can register to
7
+ # receive important information from Amazon without having to poll the
8
+ # Amazon MWS service. Instead, the information is sent directly to you when
9
+ # an event occurs to which you are subscribed.
10
+ class Subscriptions < ::Peddler::Client
11
+ path 'Subscriptions/2013-07-01'
12
+
13
+ # Registers a new destination to receive notifications
14
+ #
15
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_RegisterDestination.html
16
+ # @method register_destination
17
+ # @overload register_destination(sqs_queue_url, marketplace_id = marketplace_id)
18
+ # @param sqs_queue_url [String]
19
+ # @param marketplace_id [String]
20
+ # @return [Peddler::Parser]
21
+ def register_destination(sqs_queue_url, marketplace_id = marketplace_id)
22
+ operation('RegisterDestination')
23
+ .add('MarketplaceId' => marketplace_id)
24
+ .add(build_destination(sqs_queue_url))
25
+
26
+ run
27
+ end
28
+
29
+ # Removes an existing destination from the list of registered destinations
30
+ #
31
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_DeregisterDestination.html
32
+ # @method deregister_destination
33
+ # @overload deregister_destination(sqs_queue_url, marketplace_id = marketplace_id)
34
+ # @param sqs_queue_url [String]
35
+ # @param marketplace_id [String]
36
+ # @return [Peddler::Parser]
37
+ def deregister_destination(sqs_queue_url, marketplace_id = marketplace_id)
38
+ operation('DeregisterDestination')
39
+ .add('MarketplaceId' => marketplace_id)
40
+ .add(build_destination(sqs_queue_url))
41
+
42
+ run
43
+ end
44
+
45
+ # Lists all registered destinations
46
+ #
47
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_ListRegisteredDestinations.html
48
+ # @param marketplace_id [String]
49
+ # @return [Peddler::Parser]
50
+ def list_registered_destinations( marketplace_id = marketplace_id)
51
+ operation('ListRegisteredDestinations')
52
+ .add('MarketplaceId' => marketplace_id)
53
+
54
+ run
55
+ end
56
+
57
+ # Sends a test notification to an existing destination
58
+ #
59
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_SendTestNotificationToDestination.html
60
+ # @method send_test_notification_to_destination
61
+ # @overload send_test_notification_to_destination(sqs_queue_url, marketplace_id = marketplace_id)
62
+ # @param sqs_queue_url [String]
63
+ # @param marketplace_id [String]
64
+ # @return [Peddler::Parser]
65
+ def send_test_notification_to_destination(sqs_queue_url, marketplace_id = marketplace_id)
66
+ operation('SendTestNotificationToDestination')
67
+ .add('MarketplaceId' => marketplace_id)
68
+ .add(build_destination(sqs_queue_url))
69
+
70
+ run
71
+ end
72
+
73
+ # Creates a new subscription
74
+ #
75
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_CreateSubscription.html
76
+ # @param notification_type [String]
77
+ # @param sqs_queue_url [String]
78
+ # @param marketplace_id [String]
79
+ # @return [Peddler::Parser]
80
+ def create_subscription(notification_type, sqs_queue_url, marketplace_id = marketplace_id)
81
+ operation('CreateSubscription')
82
+ .add('MarketplaceId' => marketplace_id)
83
+ .add(build_subscription(notification_type, sqs_queue_url))
84
+
85
+ run
86
+ end
87
+
88
+ # Gets a subscription
89
+ #
90
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_GetSubscription.html
91
+ # @param notification_type [String]
92
+ # @param sqs_queue_url [String]
93
+ # @param marketplace_id [String]
94
+ # @return [Peddler::Parser]
95
+ def get_subscription(notification_type, sqs_queue_url, marketplace_id = marketplace_id)
96
+ operation('GetSubscription')
97
+ .add('MarketplaceId' => marketplace_id, 'NotificationType' => notification_type)
98
+ .add(build_destination(sqs_queue_url))
99
+
100
+ run
101
+ end
102
+
103
+ # Deletes a subscription
104
+ #
105
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_DeleteSubscription.html
106
+ # @param notification_type [String]
107
+ # @param sqs_queue_url [String]
108
+ # @param marketplace_id [String]
109
+ # @return [Peddler::Parser]
110
+ def delete_subscription(notification_type, sqs_queue_url, marketplace_id = marketplace_id)
111
+ operation('DeleteSubscription')
112
+ .add('MarketplaceId' => marketplace_id, 'NotificationType' => notification_type)
113
+ .add(build_destination(sqs_queue_url))
114
+
115
+ run
116
+ end
117
+
118
+ # Lists current subscriptions
119
+ #
120
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_ListSubscriptions.html
121
+ # @param marketplace_id [String]
122
+ # @return [Peddler::Parser]
123
+ def list_subscriptions(marketplace_id = marketplace_id)
124
+ operation('ListSubscriptions')
125
+ .add('MarketplaceId' => marketplace_id)
126
+
127
+ run
128
+ end
129
+
130
+ # Updates a subscription
131
+ #
132
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_UpdateSubscription.html
133
+ # @param notification_type [String]
134
+ # @param sqs_queue_url [String]
135
+ # @param enabled [Boolean]
136
+ # @param marketplace_id [String]
137
+ # @return [Peddler::Parser]
138
+ def update_subscription(notification_type, sqs_queue_url, enabled, marketplace_id = marketplace_id)
139
+ operation('CreateSubscription')
140
+ .add('MarketplaceId' => marketplace_id)
141
+ .add(build_subscription(notification_type, sqs_queue_url, enabled))
142
+
143
+ run
144
+ end
145
+
146
+ # Gets the service status of the API
147
+ #
148
+ # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_GetServiceStatus.html
149
+ # @return [Peddler::Parser]
150
+ def get_service_status
151
+ operation('GetServiceStatus')
152
+ run
153
+ end
154
+
155
+ private
156
+
157
+ def build_destination(sqs_queue_url)
158
+ {
159
+ 'Destination.DeliveryChannel' => 'SQS',
160
+ 'Destination.AttributeList.member.1.Key' => 'sqsQueueUrl',
161
+ 'Destination.AttributeList.member.1.Value' => sqs_queue_url
162
+ }
163
+ end
164
+
165
+ def build_subscription(notification_type, sqs_queue_url, enabled = true)
166
+ {
167
+ 'Subscription.IsEnabled' => enabled,
168
+ 'Subscription.NotificationType' => notification_type,
169
+ 'Subscription.Destination.DeliveryChannel' => 'SQS',
170
+ 'Subscription.Destination.AttributeList.member.1.Key' => 'sqsQueueUrl',
171
+ 'Subscription.Destination.AttributeList.member.1.Value' => sqs_queue_url
172
+ }
173
+ end
174
+ end
175
+ end