mws-orders 0.0.2 → 0.1.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/LICENSE +1 -1
- data/README.md +16 -25
- data/lib/mws-orders.rb +2 -29
- data/lib/mws/orders/collection.rb +29 -0
- data/lib/mws/orders/document.rb +28 -0
- data/lib/mws/orders/entity.rb +39 -0
- data/lib/mws/orders/invoice_data.rb +23 -0
- data/lib/mws/orders/order.rb +113 -0
- data/lib/mws/orders/order_item.rb +108 -0
- data/lib/mws/orders/order_items.rb +15 -0
- data/lib/mws/orders/orders.rb +15 -0
- data/lib/mws/orders/parser.rb +52 -0
- data/lib/mws/orders/payment_execution_detail.rb +12 -0
- data/lib/mws/orders/payment_execution_detail_item.rb +15 -0
- data/lib/mws/orders/service_status.rb +24 -0
- data/lib/mws/orders/service_status_message.rb +15 -0
- data/lib/mws/orders/shipping_address.rb +35 -0
- data/lib/mws/orders/tokenable.rb +10 -0
- data/lib/mws/orders/version.rb +1 -1
- data/test/integration/test_integration.rb +26 -0
- data/test/mws/orders/test_entity.rb +88 -0
- data/test/{parsers/order_test.rb → mws/orders/test_order.rb} +11 -6
- data/test/{parsers/order_item_test.rb → mws/orders/test_order_item.rb} +4 -4
- data/test/mws/orders/test_order_items.rb +19 -0
- data/test/mws/orders/test_orders.rb +19 -0
- data/test/mws/orders/test_parser.rb +7 -0
- data/test/mws/orders/test_payment_execution_detail.rb +15 -0
- data/test/mws/orders/test_payment_execution_detail_item.rb +16 -0
- data/test/mws/orders/test_service_status.rb +24 -0
- data/test/mws/orders/test_service_status_message.rb +16 -0
- data/test/{parsers/shipping_address_test.rb → mws/orders/test_shipping_address.rb} +4 -4
- data/test/test_helper.rb +15 -6
- metadata +67 -134
- data/lib/mws/orders/client.rb +0 -88
- data/lib/mws/orders/helpers/parameters.rb +0 -53
- data/lib/mws/orders/helpers/structured_list.rb +0 -40
- data/lib/mws/orders/parsers/base.rb +0 -27
- data/lib/mws/orders/parsers/collection.rb +0 -22
- data/lib/mws/orders/parsers/invoice_data.rb +0 -23
- data/lib/mws/orders/parsers/model.rb +0 -38
- data/lib/mws/orders/parsers/order.rb +0 -108
- data/lib/mws/orders/parsers/order_item.rb +0 -107
- data/lib/mws/orders/parsers/order_items.rb +0 -17
- data/lib/mws/orders/parsers/orders.rb +0 -17
- data/lib/mws/orders/parsers/payment_execution_detail.rb +0 -17
- data/lib/mws/orders/parsers/payment_execution_detail_item.rb +0 -15
- data/lib/mws/orders/parsers/service_status.rb +0 -32
- data/lib/mws/orders/parsers/service_status_message.rb +0 -15
- data/lib/mws/orders/parsers/shipping_address.rb +0 -35
- data/lib/mws/orders/requests/base.rb +0 -55
- data/lib/mws/orders/requests/order_items.rb +0 -23
- data/lib/mws/orders/requests/orders.rb +0 -36
- data/lib/mws/orders/requests/service_status.rb +0 -18
- data/test/fixtures/mws.yml +0 -12
- data/test/helpers/parameters_test.rb +0 -34
- data/test/helpers/structured_list_test.rb +0 -17
- data/test/integration/order_items_test.rb +0 -16
- data/test/integration/orders_test.rb +0 -17
- data/test/integration/service_status_test.rb +0 -9
- data/test/integration/test_helper.rb +0 -12
- data/test/parsers/collection_test.rb +0 -7
- data/test/parsers/model_test.rb +0 -27
- data/test/parsers/order_items_test.rb +0 -13
- data/test/parsers/orders_test.rb +0 -13
- data/test/parsers/payment_execution_detail_item_test.rb +0 -16
- data/test/parsers/payment_execution_detail_test.rb +0 -13
- data/test/parsers/service_status_message_test.rb +0 -16
- data/test/parsers/service_status_test.rb +0 -38
- data/test/parsers/test_helper.rb +0 -10
- data/test/requests/order_items_test.rb +0 -36
- data/test/requests/orders_test.rb +0 -46
- data/test/requests/service_status_test.rb +0 -22
- data/test/requests/test_helper.rb +0 -18
@@ -1,53 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Helper
|
4
|
-
class Parameters < SimpleDelegator
|
5
|
-
def initialize(action)
|
6
|
-
super({ 'Action' => camelize(action) })
|
7
|
-
end
|
8
|
-
|
9
|
-
def timestamp!
|
10
|
-
each do |key, value|
|
11
|
-
store(key, value.iso8601) if value.respond_to?(:iso8601)
|
12
|
-
end
|
13
|
-
|
14
|
-
self
|
15
|
-
end
|
16
|
-
|
17
|
-
def format_structured_lists!
|
18
|
-
lists = {}
|
19
|
-
|
20
|
-
each do |key, value|
|
21
|
-
if StructuredList.handle?(key)
|
22
|
-
lists.update(StructuredList.new(key).build(delete(key)))
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
update(lists)
|
27
|
-
end
|
28
|
-
|
29
|
-
def camelize_keys!
|
30
|
-
keys.each do |key|
|
31
|
-
if key.is_a?(Symbol)
|
32
|
-
new_key = camelize(key)
|
33
|
-
store(new_key, delete(key))
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
self
|
38
|
-
end
|
39
|
-
|
40
|
-
def update(hsh)
|
41
|
-
__getobj__.update(hsh)
|
42
|
-
self
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
def camelize(sym)
|
48
|
-
sym.to_s.split('_').map(&:capitalize).join
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Helper
|
4
|
-
class StructuredList
|
5
|
-
KEYS = {
|
6
|
-
order_status: %w(OrderStatus Status),
|
7
|
-
marketplace_id: %w(MarketplaceId Id),
|
8
|
-
fulfillment_channel: %w(FulfillmentChannel Channel),
|
9
|
-
payment_method: %w(PaymentMethod),
|
10
|
-
tfm_shipment_status: %w(TFMShipmentStatus Status),
|
11
|
-
amazon_order_id: %w(AmazonOrderId Id)
|
12
|
-
}
|
13
|
-
|
14
|
-
attr :keys
|
15
|
-
|
16
|
-
def self.handle?(key)
|
17
|
-
KEYS.has_key?(key)
|
18
|
-
end
|
19
|
-
|
20
|
-
def initialize(key)
|
21
|
-
@keys = KEYS.fetch(key)
|
22
|
-
end
|
23
|
-
|
24
|
-
def build(values)
|
25
|
-
Array(values)
|
26
|
-
.each_with_index
|
27
|
-
.reduce(Hash.new) { |hsh, (v, i)|
|
28
|
-
hsh.merge(composite_key(i + 1) => v)
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def composite_key(index)
|
35
|
-
(keys.dup << index).join('.')
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Parser
|
4
|
-
class Base
|
5
|
-
attr :document
|
6
|
-
|
7
|
-
def initialize(document)
|
8
|
-
@document = document
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def at_xpath(path)
|
14
|
-
document.at_xpath(with_namespace(path))
|
15
|
-
end
|
16
|
-
|
17
|
-
def xpath(path)
|
18
|
-
document.xpath(with_namespace(path))
|
19
|
-
end
|
20
|
-
|
21
|
-
def with_namespace(path)
|
22
|
-
path.split('/').map { |attr| "xmlns:#{attr}" }.join('/')
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Parser
|
4
|
-
class Collection < Base
|
5
|
-
include Enumerable
|
6
|
-
|
7
|
-
def each
|
8
|
-
raise NotImplementedError
|
9
|
-
end
|
10
|
-
|
11
|
-
def empty?
|
12
|
-
count == 0
|
13
|
-
end
|
14
|
-
|
15
|
-
def inspect
|
16
|
-
"#<#{self.class}>"
|
17
|
-
end
|
18
|
-
alias :to_s :inspect
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Parser
|
4
|
-
class InvoiceData < Model
|
5
|
-
value :invoice_requirement do
|
6
|
-
text_at_xpath('InvoiceRequirement')
|
7
|
-
end
|
8
|
-
|
9
|
-
value :buyer_selected_invoice_category do
|
10
|
-
text_at_xpath('BuyerSelectedInvoiceCategory')
|
11
|
-
end
|
12
|
-
|
13
|
-
value :invoice_title do
|
14
|
-
text_at_xpath('InvoiceTitle')
|
15
|
-
end
|
16
|
-
|
17
|
-
value :invoice_information do
|
18
|
-
text_at_xpath('InvoiceInformation')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Parser
|
4
|
-
class Model < Base
|
5
|
-
include Structure
|
6
|
-
|
7
|
-
def float_at_xpath(path)
|
8
|
-
str = text_at_xpath(path)
|
9
|
-
str.to_f if str
|
10
|
-
end
|
11
|
-
|
12
|
-
def integer_at_xpath(path)
|
13
|
-
str = text_at_xpath(path)
|
14
|
-
str.to_i if str
|
15
|
-
end
|
16
|
-
|
17
|
-
def money_at_xpath(path)
|
18
|
-
return unless amount = float_at_xpath("#{path}/Amount")
|
19
|
-
|
20
|
-
currency_code = text_at_xpath("#{path}/CurrencyCode")
|
21
|
-
amount = amount * 100 unless currency_code == 'JPY'
|
22
|
-
|
23
|
-
Money.new(amount, currency_code)
|
24
|
-
end
|
25
|
-
|
26
|
-
def text_at_xpath(path)
|
27
|
-
node = at_xpath(path)
|
28
|
-
node.text if node
|
29
|
-
end
|
30
|
-
|
31
|
-
def time_at_xpath(path)
|
32
|
-
str = text_at_xpath(path)
|
33
|
-
Time.parse(CGI.unescape(str)) if str
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,108 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Parser
|
4
|
-
class Order < Model
|
5
|
-
value :amazon_order_id do
|
6
|
-
text_at_xpath('AmazonOrderId')
|
7
|
-
end
|
8
|
-
|
9
|
-
value :seller_order_id do
|
10
|
-
text_at_xpath('SellerOrderId')
|
11
|
-
end
|
12
|
-
|
13
|
-
value :purchased_at do
|
14
|
-
time_at_xpath('PurchaseDate')
|
15
|
-
end
|
16
|
-
|
17
|
-
value :last_updated_at do
|
18
|
-
time_at_xpath('LastUpdateDate')
|
19
|
-
end
|
20
|
-
|
21
|
-
value :status do
|
22
|
-
text_at_xpath('OrderStatus')
|
23
|
-
end
|
24
|
-
|
25
|
-
value :fulfillment_channel do
|
26
|
-
text_at_xpath('FulfillmentChannel')
|
27
|
-
end
|
28
|
-
|
29
|
-
value :sales_channel do
|
30
|
-
text_at_xpath('SalesChannel')
|
31
|
-
end
|
32
|
-
|
33
|
-
value :order_channel do
|
34
|
-
text_at_xpath('OrderChannel')
|
35
|
-
end
|
36
|
-
|
37
|
-
value :ship_service_level do
|
38
|
-
text_at_xpath('ShipServiceLevel')
|
39
|
-
end
|
40
|
-
|
41
|
-
value :shipping_address do
|
42
|
-
ShippingAddress.new(at_xpath('ShippingAddress'))
|
43
|
-
end
|
44
|
-
|
45
|
-
value :total do
|
46
|
-
money_at_xpath('OrderTotal')
|
47
|
-
end
|
48
|
-
|
49
|
-
value :number_of_items_shipped do
|
50
|
-
integer_at_xpath('NumberOfItemsShipped')
|
51
|
-
end
|
52
|
-
|
53
|
-
value :number_of_items_unshipped do
|
54
|
-
integer_at_xpath('NumberOfItemsUnshipped')
|
55
|
-
end
|
56
|
-
|
57
|
-
value :payment_execution_detail do
|
58
|
-
node = at_xpath('PaymentExecutionDetail')
|
59
|
-
PaymentExecutionDetail.new(node) if node
|
60
|
-
end
|
61
|
-
|
62
|
-
value :payment_method do
|
63
|
-
text_at_xpath('PaymentMethod')
|
64
|
-
end
|
65
|
-
|
66
|
-
value :marketplace_id do
|
67
|
-
text_at_xpath('MarketplaceId')
|
68
|
-
end
|
69
|
-
|
70
|
-
value :buyer_name do
|
71
|
-
text_at_xpath('BuyerName')
|
72
|
-
end
|
73
|
-
|
74
|
-
value :buyer_email do
|
75
|
-
text_at_xpath('BuyerEmail')
|
76
|
-
end
|
77
|
-
|
78
|
-
value :shipment_service_level_category do
|
79
|
-
text_at_xpath('ShipmentServiceLevelCategory')
|
80
|
-
end
|
81
|
-
|
82
|
-
value :cba_displayable_shipping_label do
|
83
|
-
text_at_xpath('CbaDisplayableShippingLabel')
|
84
|
-
end
|
85
|
-
|
86
|
-
value :shipped_by_amazon_tfm do
|
87
|
-
text_at_xpath('ShippedByAmazonTFM')
|
88
|
-
end
|
89
|
-
|
90
|
-
value :tfm_shipment_status do
|
91
|
-
text_at_xpath('TFMShipmentStatus')
|
92
|
-
end
|
93
|
-
|
94
|
-
value :type do
|
95
|
-
text_at_xpath('OrderType')
|
96
|
-
end
|
97
|
-
|
98
|
-
value :earliest_shipped_at do
|
99
|
-
time_at_xpath('EarliestShipDate')
|
100
|
-
end
|
101
|
-
|
102
|
-
value :latest_shipped_at do
|
103
|
-
time_at_xpath('LatestShipDate')
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
@@ -1,107 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Parser
|
4
|
-
class OrderItem < Model
|
5
|
-
value :asin do
|
6
|
-
text_at_xpath('ASIN')
|
7
|
-
end
|
8
|
-
|
9
|
-
value :seller_sku do
|
10
|
-
text_at_xpath('SellerSKU')
|
11
|
-
end
|
12
|
-
|
13
|
-
value :order_item_id do
|
14
|
-
text_at_xpath('OrderItemId')
|
15
|
-
end
|
16
|
-
|
17
|
-
value :title do
|
18
|
-
text_at_xpath('Title')
|
19
|
-
end
|
20
|
-
|
21
|
-
value :quantity_ordered do
|
22
|
-
integer_at_xpath('QuantityOrdered')
|
23
|
-
end
|
24
|
-
|
25
|
-
value :quantity_shipped do
|
26
|
-
integer_at_xpath('QuantityShipped')
|
27
|
-
end
|
28
|
-
|
29
|
-
value :gift_message_text do
|
30
|
-
text_at_xpath('GiftMessageText')
|
31
|
-
end
|
32
|
-
|
33
|
-
value :gift_wrap_level do
|
34
|
-
text_at_xpath('GiftWrapLevel')
|
35
|
-
end
|
36
|
-
|
37
|
-
value :item_price do
|
38
|
-
money_at_xpath('ItemPrice')
|
39
|
-
end
|
40
|
-
|
41
|
-
value :shipping_price do
|
42
|
-
money_at_xpath('ShippingPrice')
|
43
|
-
end
|
44
|
-
|
45
|
-
value :gift_wrap_price do
|
46
|
-
money_at_xpath('GiftWrapPrice')
|
47
|
-
end
|
48
|
-
|
49
|
-
value :item_tax do
|
50
|
-
money_at_xpath('ItemTax')
|
51
|
-
end
|
52
|
-
|
53
|
-
value :shipping_tax do
|
54
|
-
money_at_xpath('ShippingTax')
|
55
|
-
end
|
56
|
-
|
57
|
-
value :gift_wrap_tax do
|
58
|
-
money_at_xpath('GiftWrapPrice')
|
59
|
-
end
|
60
|
-
|
61
|
-
value :shipping_discount do
|
62
|
-
money_at_xpath('ShippingDiscount')
|
63
|
-
end
|
64
|
-
|
65
|
-
value :promotion_discount do
|
66
|
-
money_at_xpath('PromotionDiscount')
|
67
|
-
end
|
68
|
-
|
69
|
-
value :promotion_ids do
|
70
|
-
xpath('PromotionId').map(&:text)
|
71
|
-
end
|
72
|
-
|
73
|
-
value :cod_fee do
|
74
|
-
money_at_xpath('CODFee')
|
75
|
-
end
|
76
|
-
|
77
|
-
value :cod_fee_discount do
|
78
|
-
money_at_xpath('CODFeeDiscount')
|
79
|
-
end
|
80
|
-
|
81
|
-
value :invoice_data do
|
82
|
-
xpath('InvoiceData').map { |node| InvoiceData.new(node) }
|
83
|
-
end
|
84
|
-
|
85
|
-
value :condition_id do
|
86
|
-
text_at_xpath('ConditionId')
|
87
|
-
end
|
88
|
-
|
89
|
-
value :condition_subtype_id do
|
90
|
-
text_at_xpath('ConditionSubtypeId')
|
91
|
-
end
|
92
|
-
|
93
|
-
value :condition_note do
|
94
|
-
text_at_xpath('ConditionNote')
|
95
|
-
end
|
96
|
-
|
97
|
-
value :scheduled_delivery_ends_at do
|
98
|
-
time_at_xpath('ScheduledDeliveryEndDate')
|
99
|
-
end
|
100
|
-
|
101
|
-
value :scheduled_delivery_starts_at do
|
102
|
-
time_at_xpath('ScheduledDeliveryStartDate')
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module MWS
|
2
|
-
module Orders
|
3
|
-
module Parser
|
4
|
-
class OrderItems < Collection
|
5
|
-
def each(&blk)
|
6
|
-
order_item_nodes.each { |node| yield OrderItem.new(node) }
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def order_item_nodes
|
12
|
-
xpath('OrderItem')
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|