peddler 0.6.3 → 0.6.4
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 +48 -145
- data/lib/mws/feeds/client.rb +7 -1
- data/lib/mws/feeds/parsers/feed.rb +3 -3
- data/lib/mws/feeds/parsers/feed_submission_count.rb +2 -5
- data/lib/mws/feeds/parsers/{feed_submission.rb → feed_submission_info.rb} +1 -1
- data/lib/mws/feeds/parsers/feed_submission_list.rb +6 -3
- data/lib/mws/feeds/parsers/feed_submissions.rb +2 -2
- data/lib/mws/feeds/requests/feed_submission_list.rb +4 -2
- data/lib/mws/orders/client.rb +12 -2
- data/lib/mws/orders/parsers/order_items.rb +3 -0
- data/lib/mws/orders/parsers/orders.rb +6 -3
- data/lib/mws/orders/requests/order_items.rb +4 -2
- data/lib/mws/orders/requests/orders.rb +4 -2
- data/lib/mws/reports/client.rb +243 -0
- data/lib/mws/reports/parsers/report.rb +10 -0
- data/lib/mws/reports/parsers/report_acknowledgements.rb +20 -0
- data/lib/mws/reports/parsers/report_count.rb +10 -0
- data/lib/mws/reports/parsers/report_info.rb +29 -0
- data/lib/mws/reports/parsers/report_list.rb +23 -0
- data/lib/mws/reports/parsers/report_request_count.rb +10 -0
- data/lib/mws/reports/parsers/report_request_info.rb +49 -0
- data/lib/mws/reports/parsers/report_request_list.rb +23 -0
- data/lib/mws/reports/parsers/report_requests.rb +18 -0
- data/lib/mws/reports/parsers/report_schedule.rb +21 -0
- data/lib/mws/reports/parsers/report_schedule_count.rb +10 -0
- data/lib/mws/reports/parsers/report_schedule_list.rb +23 -0
- data/lib/mws/reports/parsers/report_scheduler.rb +19 -0
- data/lib/mws/reports/requests/report.rb +18 -0
- data/lib/mws/reports/requests/report_acknowledgements.rb +27 -0
- data/lib/mws/reports/requests/report_count.rb +20 -0
- data/lib/mws/reports/requests/report_list.rb +30 -0
- data/lib/mws/reports/requests/report_request_count.rb +20 -0
- data/lib/mws/reports/requests/report_request_info.rb +21 -0
- data/lib/mws/reports/requests/report_request_list.rb +30 -0
- data/lib/mws/reports/requests/report_requests.rb +20 -0
- data/lib/mws/reports/requests/report_schedule_count.rb +19 -0
- data/lib/mws/reports/requests/report_schedule_list.rb +23 -0
- data/lib/mws/reports/requests/report_scheduler.rb +29 -0
- data/lib/mws/sellers/client.rb +46 -0
- data/lib/mws/sellers/parsers/marketplace.rb +33 -0
- data/lib/mws/sellers/parsers/marketplace_participations.rb +32 -0
- data/lib/mws/sellers/parsers/participation.rb +21 -0
- data/lib/mws/sellers/parsers/service_status.rb +36 -0
- data/lib/mws/sellers/parsers/service_status_message.rb +17 -0
- data/lib/mws/sellers/requests/marketplace_participations.rb +27 -0
- data/lib/mws/sellers/requests/service_status.rb +15 -0
- data/lib/peddler/parsers/base.rb +2 -2
- data/lib/peddler/parsers/counter.rb +13 -0
- data/lib/peddler/parsers/model.rb +4 -5
- data/lib/peddler/parsers/text.rb +0 -5
- data/lib/peddler/parsers/tokenable.rb +13 -0
- data/lib/peddler/parsers/xml.rb +10 -5
- data/lib/peddler/request/parameters.rb +2 -1
- data/lib/peddler/request/structured_list.rb +5 -0
- data/lib/peddler/request.rb +13 -15
- data/lib/peddler/response/base.rb +0 -0
- data/lib/peddler/response/payload/base.rb +0 -0
- data/lib/peddler/response/payload/csv.rb +0 -0
- data/lib/peddler/response/payload/xml.rb +0 -0
- data/lib/peddler/{response_wrapper.rb → response.rb} +6 -11
- data/lib/peddler/version.rb +1 -1
- data/test/fixtures/mws.yml +4 -0
- data/test/fixtures/reports/report.xml +8 -0
- data/test/fixtures/reports/report_acknowledgements.xml +18 -0
- data/test/fixtures/reports/report_count.xml +9 -0
- data/test/fixtures/reports/report_list.xml +17 -0
- data/test/fixtures/reports/report_request_count.xml +9 -0
- data/test/fixtures/reports/report_request_list.xml +24 -0
- data/test/fixtures/reports/report_requests.xml +19 -0
- data/test/fixtures/reports/report_schedule_count.xml +10 -0
- data/test/fixtures/reports/report_schedule_list.xml +16 -0
- data/test/fixtures/reports/report_scheduler.xml +15 -0
- data/test/fixtures/sellers/market_participations.xml +27 -0
- data/test/fixtures/sellers/service_status.xml +9 -0
- data/test/integration/feeds/test_feed_submission_list.rb +2 -0
- data/test/integration/orders/test_orders.rb +3 -0
- data/test/integration/reports/test_report.rb +15 -0
- data/test/integration/reports/test_report_count.rb +13 -0
- data/test/integration/reports/test_report_list.rb +17 -0
- data/test/integration/reports/test_report_request_count.rb +13 -0
- data/test/integration/reports/test_report_request_list.rb +17 -0
- data/test/integration/reports/test_report_schedule_count.rb +13 -0
- data/test/integration/reports/test_report_schedule_list.rb +13 -0
- data/test/integration/reports/test_report_scheduler.rb +16 -0
- data/test/integration/sellers/test_marketplace_participations.rb +13 -0
- data/test/integration/sellers/test_service_status.rb +12 -0
- data/test/integration_helper.rb +3 -0
- data/test/mws/feeds/parsers/test_feed.rb +2 -2
- data/test/mws/feeds/parsers/{test_feed_submission.rb → test_feed_submission_info.rb} +3 -3
- data/test/mws/feeds/parsers/test_feed_submission_list.rb +5 -1
- data/test/mws/feeds/parsers/test_feed_submission_result.rb +1 -1
- data/test/mws/feeds/requests/test_feed_submission_list.rb +3 -6
- data/test/mws/orders/parsers/test_order_items.rb +4 -0
- data/test/mws/orders/parsers/test_orders.rb +4 -0
- data/test/mws/orders/parsers/test_service_status.rb +1 -1
- data/test/mws/orders/requests/test_order_items.rb +3 -6
- data/test/mws/orders/requests/test_orders.rb +3 -6
- data/test/mws/reports/parsers/test_report_acknowledgments.rb +14 -0
- data/test/mws/reports/parsers/test_report_count.rb +13 -0
- data/test/mws/reports/parsers/test_report_info.rb +29 -0
- data/test/mws/reports/parsers/test_report_list.rb +18 -0
- data/test/mws/reports/parsers/test_report_request_count.rb +13 -0
- data/test/mws/reports/parsers/test_report_request_info.rb +49 -0
- data/test/mws/reports/parsers/test_report_request_list.rb +18 -0
- data/test/mws/reports/parsers/test_report_requests.rb +17 -0
- data/test/mws/reports/parsers/test_report_schedule_count.rb +13 -0
- data/test/mws/reports/parsers/test_report_schedule_list.rb +18 -0
- data/test/mws/reports/parsers/test_report_scheduler.rb +17 -0
- data/test/mws/reports/requests/test_acknowledgements.rb +36 -0
- data/test/mws/reports/requests/test_report_count.rb +23 -0
- data/test/mws/reports/requests/test_report_info.rb +29 -0
- data/test/mws/reports/requests/test_report_list.rb +39 -0
- data/test/mws/reports/requests/test_report_request_count.rb +23 -0
- data/test/mws/reports/requests/test_report_request_list.rb +44 -0
- data/test/mws/reports/requests/test_report_requests.rb +29 -0
- data/test/mws/reports/requests/test_report_schedule_count.rb +22 -0
- data/test/mws/reports/requests/test_report_schedule_list.rb +36 -0
- data/test/mws/reports/requests/test_report_scheduler.rb +33 -0
- data/test/mws/sellers/parsers/test_market_participations.rb +19 -0
- data/test/mws/sellers/parsers/test_service_status.rb +35 -0
- data/test/mws/sellers/requests/test_marketplace_participation_list.rb +39 -0
- data/test/mws/sellers/requests/test_service_status.rb +25 -0
- data/test/peddler/parsers/test_model.rb +36 -0
- data/test/request_helper.rb +1 -1
- metadata +171 -42
- data/test/peddler/test_request.rb +0 -18
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'peddler/request'
|
|
2
|
+
require 'mws/reports/parsers/report_request_list'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Reports
|
|
6
|
+
module Requests
|
|
7
|
+
class ReportRequestList < ::Peddler::Request
|
|
8
|
+
def get(options = {})
|
|
9
|
+
parameters(:get_report_request_list)
|
|
10
|
+
.update(options)
|
|
11
|
+
.timestamp!
|
|
12
|
+
.format_structured_lists!
|
|
13
|
+
.camelize_keys!
|
|
14
|
+
|
|
15
|
+
execute
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get_by_next_token(token = next_token)
|
|
19
|
+
return false unless token
|
|
20
|
+
|
|
21
|
+
parameters(:get_report_request_list_by_next_token)
|
|
22
|
+
.update(next_token: token)
|
|
23
|
+
.camelize_keys!
|
|
24
|
+
|
|
25
|
+
execute
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'peddler/request'
|
|
2
|
+
require 'mws/reports/parsers/report_requests'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Reports
|
|
6
|
+
module Requests
|
|
7
|
+
class ReportRequests < ::Peddler::Request
|
|
8
|
+
def cancel(options = {})
|
|
9
|
+
parameters(:cancel_report_requests)
|
|
10
|
+
.update(options)
|
|
11
|
+
.timestamp!
|
|
12
|
+
.format_structured_lists!
|
|
13
|
+
.camelize_keys!
|
|
14
|
+
|
|
15
|
+
execute
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'peddler/request'
|
|
2
|
+
require 'mws/reports/parsers/report_schedule_count'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Reports
|
|
6
|
+
module Requests
|
|
7
|
+
class ReportScheduleCount < ::Peddler::Request
|
|
8
|
+
def get(*types)
|
|
9
|
+
parameters(:get_report_schedule_count)
|
|
10
|
+
.update(report_type_list: types)
|
|
11
|
+
.format_structured_lists!
|
|
12
|
+
.camelize_keys!
|
|
13
|
+
|
|
14
|
+
execute
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'peddler/request'
|
|
2
|
+
require 'mws/reports/parsers/report_schedule_list'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Reports
|
|
6
|
+
module Requests
|
|
7
|
+
class ReportScheduleList < ::Peddler::Request
|
|
8
|
+
def get(*types)
|
|
9
|
+
parameters(:get_report_schedule_list)
|
|
10
|
+
.update(report_type_list: types)
|
|
11
|
+
.format_structured_lists!
|
|
12
|
+
.camelize_keys!
|
|
13
|
+
|
|
14
|
+
execute
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def get_by_next_token(token = next_token)
|
|
18
|
+
raise NotImplementedError
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'peddler/request'
|
|
2
|
+
require 'mws/reports/parsers/report_scheduler'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Reports
|
|
6
|
+
module Requests
|
|
7
|
+
class ReportScheduler < ::Peddler::Request
|
|
8
|
+
def manage(type, schedule, scheduled_at = nil)
|
|
9
|
+
options = {
|
|
10
|
+
report_type: type,
|
|
11
|
+
schedule: schedule
|
|
12
|
+
}
|
|
13
|
+
options.update(scheduled_date: scheduled_at) if scheduled_at
|
|
14
|
+
|
|
15
|
+
parameters(:get_report_count)
|
|
16
|
+
.update(options)
|
|
17
|
+
.timestamp!
|
|
18
|
+
.camelize_keys!
|
|
19
|
+
|
|
20
|
+
execute
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def delete(type)
|
|
24
|
+
manage(type, '_NEVER_')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
data/lib/mws/sellers/client.rb
CHANGED
|
@@ -1,7 +1,53 @@
|
|
|
1
|
+
require 'mws/sellers/requests/marketplace_participations'
|
|
2
|
+
require 'mws/sellers/requests/service_status'
|
|
3
|
+
require 'peddler/client'
|
|
4
|
+
|
|
1
5
|
module MWS
|
|
2
6
|
module Sellers
|
|
7
|
+
# The Sellers API lets sellers retrieve information about their seller
|
|
8
|
+
# account, such as the marketplaces they participate in.
|
|
3
9
|
class Client < ::Peddler::Client
|
|
4
10
|
path 'Sellers/2011-07-01'
|
|
11
|
+
|
|
12
|
+
# Public: List marketplaces that the seller submitting the request can
|
|
13
|
+
# sell in and her participations, which include seller-specific
|
|
14
|
+
# information in that marketplace.
|
|
15
|
+
#
|
|
16
|
+
# Examples
|
|
17
|
+
#
|
|
18
|
+
# client.list_marketplace_participations
|
|
19
|
+
#
|
|
20
|
+
# Returns Marketplace Participations.
|
|
21
|
+
def_delegator :marketplace_participations, :list, :list_marketplace_participations
|
|
22
|
+
|
|
23
|
+
# Public: List the next page of marketplace participations using the
|
|
24
|
+
# NextToken parameter.
|
|
25
|
+
#
|
|
26
|
+
# Examples
|
|
27
|
+
#
|
|
28
|
+
# client.list_marketplace_participations_by_next_token
|
|
29
|
+
#
|
|
30
|
+
# Returns Marketplace Participations.
|
|
31
|
+
def_delegator :marketplace_participations, :list_by_next_token, :list_marketplace_participations_by_next_token
|
|
32
|
+
|
|
33
|
+
# Public: Get the service status of the API.
|
|
34
|
+
#
|
|
35
|
+
# Examples
|
|
36
|
+
#
|
|
37
|
+
# client.get_service_status
|
|
38
|
+
#
|
|
39
|
+
# Returns the Service Status.
|
|
40
|
+
def_delegator :service_status, :get, :get_service_status
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
def marketplace_participations
|
|
45
|
+
@marketplace_participations ||= Requests::MarketplaceParticipations.new(self)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def service_status
|
|
49
|
+
@service_status ||= Requests::ServiceStatus.new(self)
|
|
50
|
+
end
|
|
5
51
|
end
|
|
6
52
|
end
|
|
7
53
|
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'peddler/parsers/model'
|
|
2
|
+
|
|
3
|
+
module MWS
|
|
4
|
+
module Sellers
|
|
5
|
+
module Parsers
|
|
6
|
+
class Marketplace < ::Peddler::Parsers::Model
|
|
7
|
+
value(:id) do
|
|
8
|
+
text_at_xpath('MarketplaceId')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
value(:name) do
|
|
12
|
+
text_at_xpath('Name')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
value(:default_country_code) do
|
|
16
|
+
text_at_xpath('DefaultCountryCode')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
value(:default_currency_code) do
|
|
20
|
+
text_at_xpath('DefaultCurrencyCode')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
value(:default_language_code) do
|
|
24
|
+
text_at_xpath('DefaultLanguageCode')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
value(:domain_name) do
|
|
28
|
+
text_at_xpath('DomainName')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'peddler/parsers/model'
|
|
2
|
+
require 'mws/sellers/parsers/marketplace'
|
|
3
|
+
require 'mws/sellers/parsers/participation'
|
|
4
|
+
require 'peddler/parsers/tokenable'
|
|
5
|
+
|
|
6
|
+
module MWS
|
|
7
|
+
module Sellers
|
|
8
|
+
module Parsers
|
|
9
|
+
class MarketplaceParticipations < ::Peddler::Parsers::Model
|
|
10
|
+
include ::Peddler::Parsers::Tokenable
|
|
11
|
+
|
|
12
|
+
value(:marketplaces) do
|
|
13
|
+
marketplace_nodes.map { |node| Marketplace.new(node) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
value(:participations) do
|
|
17
|
+
participation_nodes.map { |node| Participation.new(node) }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def participation_nodes
|
|
23
|
+
xpath('ListParticipations/Participation')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def marketplace_nodes
|
|
27
|
+
xpath('ListMarketplaces/Marketplace')
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'peddler/parsers/model'
|
|
2
|
+
|
|
3
|
+
module MWS
|
|
4
|
+
module Sellers
|
|
5
|
+
module Parsers
|
|
6
|
+
class Participation < ::Peddler::Parsers::Model
|
|
7
|
+
value(:marketplace_id) do
|
|
8
|
+
text_at_xpath('MarketplaceId')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
value(:seller_id) do
|
|
12
|
+
text_at_xpath('SellerId')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
value(:has_seller_suspended_listings?) do
|
|
16
|
+
boolean_at_xpath('HasSellerSuspendedListings')
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'mws/sellers/parsers/service_status_message'
|
|
2
|
+
require 'peddler/parsers/model'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Sellers
|
|
6
|
+
module Parsers
|
|
7
|
+
class ServiceStatus < ::Peddler::Parsers::Model
|
|
8
|
+
value :status do
|
|
9
|
+
text_at_xpath('Status')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
value :timestamp do
|
|
13
|
+
time_at_xpath('Timestamp')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
value :message_id do
|
|
17
|
+
text_at_xpath('MessageId')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
value :messages do
|
|
21
|
+
xpath('Messages/Message').map { |node| ServiceStatusMessage.new(node) }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def ok?
|
|
25
|
+
status == 'GREEN'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def inspect
|
|
29
|
+
status
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
alias :to_s :inspect
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'peddler/parsers/model'
|
|
2
|
+
|
|
3
|
+
module MWS
|
|
4
|
+
module Sellers
|
|
5
|
+
module Parsers
|
|
6
|
+
class ServiceStatusMessage < ::Peddler::Parsers::Model
|
|
7
|
+
value :locale do
|
|
8
|
+
text_at_xpath('Locale')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
value :text do
|
|
12
|
+
text_at_xpath('Text')
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'peddler/request'
|
|
2
|
+
require 'mws/sellers/parsers/marketplace_participations'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Sellers
|
|
6
|
+
module Requests
|
|
7
|
+
class MarketplaceParticipations < ::Peddler::Request
|
|
8
|
+
def list
|
|
9
|
+
parameters(:list_marketplace_participations)
|
|
10
|
+
.camelize_keys!
|
|
11
|
+
|
|
12
|
+
execute
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def list_by_next_token(token = next_token)
|
|
16
|
+
return false unless token
|
|
17
|
+
|
|
18
|
+
parameters(:list_marketplace_participations_by_next_token)
|
|
19
|
+
.update(next_token: token)
|
|
20
|
+
.camelize_keys!
|
|
21
|
+
|
|
22
|
+
execute
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'peddler/request'
|
|
2
|
+
require 'mws/sellers/parsers/service_status'
|
|
3
|
+
|
|
4
|
+
module MWS
|
|
5
|
+
module Sellers
|
|
6
|
+
module Requests
|
|
7
|
+
class ServiceStatus < ::Peddler::Request
|
|
8
|
+
def get
|
|
9
|
+
parameters(:get_service_status)
|
|
10
|
+
execute
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/peddler/parsers/base.rb
CHANGED
|
@@ -10,6 +10,10 @@ module Peddler
|
|
|
10
10
|
class Model < XML
|
|
11
11
|
include Structure
|
|
12
12
|
|
|
13
|
+
def boolean_at_xpath(path)
|
|
14
|
+
!!text_at_xpath(path).match(/true|yes/i)
|
|
15
|
+
end
|
|
16
|
+
|
|
13
17
|
def float_at_xpath(path)
|
|
14
18
|
str = text_at_xpath(path)
|
|
15
19
|
str.to_f if str
|
|
@@ -29,11 +33,6 @@ module Peddler
|
|
|
29
33
|
Money.new(amount, currency_code)
|
|
30
34
|
end
|
|
31
35
|
|
|
32
|
-
def text_at_xpath(path)
|
|
33
|
-
node = at_xpath(path)
|
|
34
|
-
node.text if node
|
|
35
|
-
end
|
|
36
|
-
|
|
37
36
|
def time_at_xpath(path)
|
|
38
37
|
str = text_at_xpath(path)
|
|
39
38
|
Time.parse(CGI.unescape(str)) if str
|
data/lib/peddler/parsers/text.rb
CHANGED
data/lib/peddler/parsers/xml.rb
CHANGED
|
@@ -3,21 +3,26 @@ require 'peddler/parsers/base'
|
|
|
3
3
|
module Peddler
|
|
4
4
|
module Parsers
|
|
5
5
|
class XML < Base
|
|
6
|
-
def self.
|
|
7
|
-
|
|
6
|
+
def self.xml?
|
|
7
|
+
true
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def text_at_xpath(path)
|
|
11
|
+
node = at_xpath(path)
|
|
12
|
+
node.text if node
|
|
8
13
|
end
|
|
9
14
|
|
|
10
15
|
def at_xpath(path)
|
|
11
|
-
document.at_xpath(
|
|
16
|
+
document.at_xpath(add_namespace(path))
|
|
12
17
|
end
|
|
13
18
|
|
|
14
19
|
def xpath(path)
|
|
15
|
-
document.xpath(
|
|
20
|
+
document.xpath(add_namespace(path))
|
|
16
21
|
end
|
|
17
22
|
|
|
18
23
|
private
|
|
19
24
|
|
|
20
|
-
def
|
|
25
|
+
def add_namespace(path)
|
|
21
26
|
path.split('/').map { |attr| "xmlns:#{attr}" }.join('/')
|
|
22
27
|
end
|
|
23
28
|
end
|
|
@@ -13,6 +13,11 @@ module Peddler
|
|
|
13
13
|
payment_method: %w(PaymentMethod),
|
|
14
14
|
tfm_shipment_status: %w(TFMShipmentStatus Status),
|
|
15
15
|
amazon_order_id: %w(AmazonOrderId Id),
|
|
16
|
+
# Reports
|
|
17
|
+
report_id_list: %w(ReportIdList Id),
|
|
18
|
+
report_request_id_list: %w(ReportRequestIdList Id),
|
|
19
|
+
report_type_list: %w(ReportTypeList Type),
|
|
20
|
+
report_processing_status_list: %w(ReportProcessingStatusList Status),
|
|
16
21
|
}
|
|
17
22
|
|
|
18
23
|
attr :keys
|
data/lib/peddler/request.rb
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
require 'forwardable'
|
|
2
|
-
|
|
3
1
|
require 'peddler/request/parameters'
|
|
4
|
-
require 'peddler/
|
|
2
|
+
require 'peddler/response'
|
|
5
3
|
|
|
6
4
|
module Peddler
|
|
7
5
|
class Request
|
|
8
|
-
extend Forwardable
|
|
9
|
-
|
|
10
|
-
def_delegator :last_response, :next_token
|
|
11
|
-
def_delegator :last_response, :xml_payload, :last_xml_payload
|
|
12
|
-
|
|
13
6
|
attr :client, :headers
|
|
14
7
|
|
|
15
|
-
attr_accessor :body, :
|
|
8
|
+
attr_accessor :body, :last_parsed_response
|
|
16
9
|
|
|
17
10
|
def initialize(client)
|
|
18
11
|
@client = client
|
|
@@ -25,8 +18,12 @@ module Peddler
|
|
|
25
18
|
end
|
|
26
19
|
|
|
27
20
|
def execute
|
|
28
|
-
fetch
|
|
29
|
-
parse
|
|
21
|
+
res = fetch
|
|
22
|
+
parse(res)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def next_token
|
|
26
|
+
last_parsed_response.next_token if last_parsed_response
|
|
30
27
|
end
|
|
31
28
|
|
|
32
29
|
def has_next_token?
|
|
@@ -40,15 +37,16 @@ module Peddler
|
|
|
40
37
|
end
|
|
41
38
|
|
|
42
39
|
def fetch
|
|
43
|
-
opts = { query: parameters, headers: headers }
|
|
40
|
+
opts = { query: parameters, headers: headers, idempotent: true, expects: 200 }
|
|
44
41
|
opts.update(body: body) if body
|
|
45
42
|
res = client.post(opts)
|
|
46
43
|
|
|
47
|
-
|
|
44
|
+
Response.new(res)
|
|
48
45
|
end
|
|
49
46
|
|
|
50
|
-
def parse
|
|
51
|
-
parser.
|
|
47
|
+
def parse(response)
|
|
48
|
+
document = parser.xml? ? response.result_node : response.body
|
|
49
|
+
@last_parsed_response = parser.new(document)
|
|
52
50
|
end
|
|
53
51
|
end
|
|
54
52
|
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -2,31 +2,26 @@ require 'forwardable'
|
|
|
2
2
|
require 'nokogiri'
|
|
3
3
|
|
|
4
4
|
module Peddler
|
|
5
|
-
class
|
|
5
|
+
class Response
|
|
6
6
|
extend Forwardable
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
attr :http_response
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
def_delegator :http_response, :body
|
|
11
11
|
|
|
12
|
-
def initialize(
|
|
13
|
-
@
|
|
12
|
+
def initialize(http_response)
|
|
13
|
+
@http_response = http_response
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def document
|
|
17
17
|
Nokogiri::XML(body)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def
|
|
20
|
+
def result_node
|
|
21
21
|
root = document.root
|
|
22
22
|
path = root.name.sub('Response', 'Result')
|
|
23
23
|
|
|
24
24
|
root.xpath("xmlns:#{path}")
|
|
25
25
|
end
|
|
26
|
-
|
|
27
|
-
def next_token
|
|
28
|
-
node = xml_payload.at_xpath('xmlns:NextToken')
|
|
29
|
-
node.text if node
|
|
30
|
-
end
|
|
31
26
|
end
|
|
32
27
|
end
|
data/lib/peddler/version.rb
CHANGED
data/test/fixtures/mws.yml
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
- country: US
|
|
2
|
+
aws_access_key_id: AKIAJ767ZET2BZR4UDDQ
|
|
3
|
+
aws_secret_access_key: rONa3ydPBTJ5JD0bxERTOX0Fv0fBK6Q986/cfMRO
|
|
4
|
+
seller_id: A2H6NH4SQYFZ4M
|
|
1
5
|
- country: GB
|
|
2
6
|
aws_access_key_id: AKIAJJDQ2MJTMPXKJE4A
|
|
3
7
|
aws_secret_access_key: BhGTh8zXIEuMjKlRJIrX+cXYqWFFYmzcGXscGblS
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
order-id order-item-id purchase-date payments-date buyer-email buyer-name buyer-phone-number sku product-name quantity-purchased currency item-price item-tax shipping-price shipping-tax ship-service-level recipient-name ship-address-1 ship-address-2 ship-address-3 ship-city ship-state ship-postal-code ship-country ship-phone-number delivery-start-date delivery-end-date delivery-time-zone delivery-Instructions
|
|
2
|
+
103-26010-55904394929210114 2011-02-09T02:46:57-08:00
|
|
3
|
+
2011-02-09T02:46:57-08:00 0g9lx423zn5@marketplace.amazon.com
|
|
4
|
+
Joe Customer 404-555-1212 JW-RT1-HLD9 The Structure of Aikido:
|
|
5
|
+
Volume 1: Kenjutsu and Taijutsu Sword and Open-Hand Movement
|
|
6
|
+
Relationships (Structure of Aikido, Vol 1) 1 USD 19.49 0.00 3.99
|
|
7
|
+
0.00 Standard Joe Customer 123 Main Street LAWRENCE CA 90044-2463
|
|
8
|
+
US 404-555-1212
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0"?>
|
|
2
|
+
<UpdateReportAcknowledgementsResponse
|
|
3
|
+
xmlns="http://mws.amazonservices.com/doc/2009-01-01/">
|
|
4
|
+
<UpdateReportAcknowledgementsResult>
|
|
5
|
+
<Count>1</Count>
|
|
6
|
+
<ReportInfo>
|
|
7
|
+
<ReportId>841997483</ReportId>
|
|
8
|
+
<ReportType>_GET_MERCHANT_LISTINGS_DATA_</ReportType>
|
|
9
|
+
<ReportRequestId>2234038326</ReportRequestId>
|
|
10
|
+
<AvailableDate>2009-01-06T03:48:36+00:00</AvailableDate>
|
|
11
|
+
<Acknowledged>true</Acknowledged>
|
|
12
|
+
<AcknowledgedDate>2009-02-20T02:10:41+00:00</AcknowledgedDate>
|
|
13
|
+
</ReportInfo>
|
|
14
|
+
</UpdateReportAcknowledgementsResult>
|
|
15
|
+
<ResponseMetadata>
|
|
16
|
+
<RequestId>42a578a7-ed92-486b-ac67-5de7464fcdfa</RequestId>
|
|
17
|
+
</ResponseMetadata>
|
|
18
|
+
</UpdateReportAcknowledgementsResponse>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<?xml version="1.0"?>
|
|
2
|
+
<GetReportCountResponse xmlns="http://mws.amazonservices.com/doc/2009-01-01/">
|
|
3
|
+
<GetReportCountResult>
|
|
4
|
+
<Count>166</Count>
|
|
5
|
+
</GetReportCountResult>
|
|
6
|
+
<ResponseMetadata>
|
|
7
|
+
<RequestId>a497aadb-5ea1-49bf-aa14-dabe914465e3</RequestId>
|
|
8
|
+
</ResponseMetadata>
|
|
9
|
+
</GetReportCountResponse>
|