amazon-mws 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.
- data/.gitignore +1 -0
- data/README.markdown +31 -0
- data/Rakefile +14 -0
- data/VERSION +1 -0
- data/amazon-mws.gemspec +164 -0
- data/examples/xml/cancel_feed_submissions.xml +16 -0
- data/examples/xml/cancel_report_requests.xml +18 -0
- data/examples/xml/error.xml +10 -0
- data/examples/xml/get_feed_submission_count.xml +10 -0
- data/examples/xml/get_feed_submission_list.xml +16 -0
- data/examples/xml/get_feed_submission_list_by_next_token.xml +16 -0
- data/examples/xml/get_feed_submission_result.xml +30 -0
- data/examples/xml/get_report_count.xml +9 -0
- data/examples/xml/get_report_list.xml +17 -0
- data/examples/xml/get_report_request_count.xml +8 -0
- data/examples/xml/get_report_request_list.xml +120 -0
- data/examples/xml/get_report_request_list_by_next_token.xml +20 -0
- data/examples/xml/get_report_schedule_count.xml +10 -0
- data/examples/xml/get_report_schedule_list.xml +15 -0
- data/examples/xml/get_report_schedule_list_by_next_token.xml +15 -0
- data/examples/xml/manage_report_schedule.xml +14 -0
- data/examples/xml/request_report.xml +17 -0
- data/examples/xml/submit_feed.xml +14 -0
- data/examples/xml/update_report_acknowledgements.xml +18 -0
- data/examples/xsd/Inventory.xsd +49 -0
- data/examples/xsd/Item.xsd +285 -0
- data/examples/xsd/Listings.xsd +32 -0
- data/examples/xsd/OrderAcknowledgement.xsd +55 -0
- data/examples/xsd/OrderAdjustment.xsd +94 -0
- data/examples/xsd/OrderFulfillment.xsd +57 -0
- data/examples/xsd/Override.xsd +48 -0
- data/examples/xsd/Price.xsd +59 -0
- data/examples/xsd/ProcessingReport.xsd +87 -0
- data/examples/xsd/Product.xsd +220 -0
- data/examples/xsd/Product/AutoAccessory.xsd +807 -0
- data/examples/xsd/Product/Beauty.xsd +114 -0
- data/examples/xsd/Product/CE.xsd +544 -0
- data/examples/xsd/Product/CameraPhoto.xsd +2410 -0
- data/examples/xsd/Product/FoodAndBeverages.xsd +270 -0
- data/examples/xsd/Product/Gourmet.xsd +85 -0
- data/examples/xsd/Product/Health.xsd +189 -0
- data/examples/xsd/Product/Home.xsd +654 -0
- data/examples/xsd/Product/Jewelry.xsd +603 -0
- data/examples/xsd/Product/Miscellaneous.xsd +157 -0
- data/examples/xsd/Product/MusicalInstruments.xsd +853 -0
- data/examples/xsd/Product/Office.xsd +550 -0
- data/examples/xsd/Product/PetSupplies.xsd +40 -0
- data/examples/xsd/Product/ProductClothing.xsd +197 -0
- data/examples/xsd/Product/SWVG.xsd +238 -0
- data/examples/xsd/Product/Sports.xsd +308 -0
- data/examples/xsd/Product/TiresAndWheels.xsd +159 -0
- data/examples/xsd/Product/Tools.xsd +66 -0
- data/examples/xsd/Product/ToysBaby.xsd +241 -0
- data/examples/xsd/Product/Wireless.xsd +77 -0
- data/examples/xsd/ProductImage.xsd +39 -0
- data/examples/xsd/Relationship.xsd +47 -0
- data/examples/xsd/SettlementReport.xsd +158 -0
- data/examples/xsd/amzn-base.xsd +1601 -0
- data/examples/xsd/amzn-envelope.xsd +98 -0
- data/examples/xsd/amzn-header.xsd +45 -0
- data/lib/amazon/mws.rb +86 -0
- data/lib/amazon/mws/authentication.rb +9 -0
- data/lib/amazon/mws/authentication/query_string.rb +28 -0
- data/lib/amazon/mws/authentication/signature.rb +43 -0
- data/lib/amazon/mws/base.rb +61 -0
- data/lib/amazon/mws/connection.rb +99 -0
- data/lib/amazon/mws/connection/management.rb +94 -0
- data/lib/amazon/mws/connection/request_builder.rb +67 -0
- data/lib/amazon/mws/exceptions.rb +80 -0
- data/lib/amazon/mws/feed.rb +223 -0
- data/lib/amazon/mws/feed_builder.rb +67 -0
- data/lib/amazon/mws/feed_enumerations.rb +46 -0
- data/lib/amazon/mws/feed_submission.rb +14 -0
- data/lib/amazon/mws/lib/extensions.rb +162 -0
- data/lib/amazon/mws/lib/memoizable.rb +10 -0
- data/lib/amazon/mws/orders.rb +9 -0
- data/lib/amazon/mws/report.rb +310 -0
- data/lib/amazon/mws/report_enumerations.rb +44 -0
- data/lib/amazon/mws/report_info.rb +16 -0
- data/lib/amazon/mws/report_request.rb +19 -0
- data/lib/amazon/mws/report_schedule.rb +13 -0
- data/lib/amazon/mws/response.rb +32 -0
- data/lib/amazon/mws/response/cancel_feed_submissions_response.rb +14 -0
- data/lib/amazon/mws/response/cancel_report_requests_response.rb +14 -0
- data/lib/amazon/mws/response/get_feed_submission_count_response.rb +13 -0
- data/lib/amazon/mws/response/get_feed_submission_list_by_next_token_response.rb +15 -0
- data/lib/amazon/mws/response/get_feed_submission_list_response.rb +15 -0
- data/lib/amazon/mws/response/get_feed_submission_result_response.rb +54 -0
- data/lib/amazon/mws/response/get_report_count_response.rb +13 -0
- data/lib/amazon/mws/response/get_report_list_response.rb +15 -0
- data/lib/amazon/mws/response/get_report_request_count_response.rb +13 -0
- data/lib/amazon/mws/response/get_report_request_list_by_next_token_response.rb +15 -0
- data/lib/amazon/mws/response/get_report_request_list_response.rb +15 -0
- data/lib/amazon/mws/response/get_report_schedule_count_response.rb +13 -0
- data/lib/amazon/mws/response/get_report_schedule_list_by_next_token_response.rb +15 -0
- data/lib/amazon/mws/response/get_report_schedule_list_response.rb +15 -0
- data/lib/amazon/mws/response/manage_report_schedule_response.rb +14 -0
- data/lib/amazon/mws/response/request_report_response.rb +14 -0
- data/lib/amazon/mws/response/response_error.rb +15 -0
- data/lib/amazon/mws/response/submit_feed_response.rb +13 -0
- data/lib/amazon/mws/response/update_reports_acknowledgements_response.rb +14 -0
- data/lib/amazon/mws/version.rb +12 -0
- data/pkg/amazon-mws-0.1.0.gem +0 -0
- data/test/authentication_test.rb +15 -0
- data/test/connection_test.rb +5 -0
- data/test/feed_builder_test.rb +15 -0
- data/test/feed_submission_test.rb +32 -0
- data/test/feed_test.rb +64 -0
- data/test/query_string_test.rb +21 -0
- data/test/report_test.rb +29 -0
- data/test/request_test.rb +18 -0
- data/test/response_test.rb +197 -0
- data/test/signature_test.rb +30 -0
- data/test/test_config.yml +5 -0
- data/test/test_helper.rb +22 -0
- metadata +179 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
3
|
+
module Amazon
|
4
|
+
module MWS
|
5
|
+
|
6
|
+
class FeedBuilder
|
7
|
+
attr_accessor :xml
|
8
|
+
|
9
|
+
OPERATION_TYPES = Set.new([
|
10
|
+
"Update",
|
11
|
+
"Delete"
|
12
|
+
])
|
13
|
+
|
14
|
+
def initialize(message_type, message = {}, params = {})
|
15
|
+
@xml = Builder::XmlMarkup.new
|
16
|
+
@message_type = message_type
|
17
|
+
@message = message
|
18
|
+
@params = params
|
19
|
+
end
|
20
|
+
|
21
|
+
def render
|
22
|
+
@xml.instruct!
|
23
|
+
@xml.AmazonEnvelope("xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "xsi:noNamespaceSchemaLocation"=>"amzn-envelope.xsd") do
|
24
|
+
render_envelope(:message_type => @message_type)
|
25
|
+
# header
|
26
|
+
render_header(@params)
|
27
|
+
# message
|
28
|
+
render_message(@message, @params)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def render_header(params = {})
|
33
|
+
@xml.Header do
|
34
|
+
@xml.MerchantIdentifier "merchant_id"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def render_envelope(params = {})
|
39
|
+
@xml.EffectiveDate Time.now
|
40
|
+
@xml.MessageID
|
41
|
+
@xml.MessageType(params[:message_type])
|
42
|
+
@xml.OperationType(params[:operation_type]) if params[:operation_type]
|
43
|
+
@xml.PurgeAndReplace(params[:purge] || false)
|
44
|
+
end
|
45
|
+
|
46
|
+
def render_message(message, params = {})
|
47
|
+
raise unless message.is_a? Hash
|
48
|
+
|
49
|
+
@xml.Message do |xml|
|
50
|
+
build_xml(message, xml)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def build_xml(hash, xml)
|
55
|
+
hash.each {|key, value|
|
56
|
+
case value
|
57
|
+
when Hash then xml.tag!(key) {|xml| build_xml(value, xml) }
|
58
|
+
when Array then xml.tag!(key) {|xml| value.each {|v| build_xml(v, xml) } }
|
59
|
+
else xml.tag!(key, value)
|
60
|
+
end
|
61
|
+
}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
# Feed
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Amazon
|
2
|
+
module MWS
|
3
|
+
module Feed
|
4
|
+
|
5
|
+
module Enumerations
|
6
|
+
|
7
|
+
# Note: We do not handle flat file feed types
|
8
|
+
FEED_TYPES = {
|
9
|
+
:product_data => '_POST_PRODUCT_DATA_',
|
10
|
+
:product_relationship_data => '_POST_PRODUCT_RELATIONSHIP_DATA_',
|
11
|
+
:item_data => '_POST_ITEM_DATA_',
|
12
|
+
:product_overrides => '_POST_PRODUCT_OVERRIDES_DATA_',
|
13
|
+
:product_image_data => '_POST_PRODUCT_IMAGE_DATA_',
|
14
|
+
:product_pricing => '_POST_PRODUCT_PRICING_DATA_',
|
15
|
+
:inventory_availability => '_POST_INVENTORY_AVAILABILITY_DATA_',
|
16
|
+
:order_acknowledgement => '_POST_ORDER_ACKNOWLEDGEMENT_DATA_',
|
17
|
+
:order_fulfillment => '_POST_ORDER_FULFILLMENT_DATA_',
|
18
|
+
:payment_adjustment => '_POST_PAYMENT_ADJUSTMENT_DATA_',
|
19
|
+
# :flat_file_listings => '_POST_FLAT_FILE_LISTINGS_DATA_',
|
20
|
+
# :flat_file_order_acknowledgement => '_POST_FLAT_FILE_ORDER_ACKNOWLEDGEMENT_DATA_',
|
21
|
+
# :flat_file_fulfillment_data => '_POST_FLAT_FILE_FULFILLMENT_DATA_',
|
22
|
+
# :flat_file_payment_adjustment => '_POST_FLAT_FILE_PAYMENT_ADJUSTMENT_DATA_',
|
23
|
+
# :flat_file_invloader => '_POST_FLAT_FILE_INVLOADER_DATA_'
|
24
|
+
}
|
25
|
+
|
26
|
+
MESSAGE_TYPES = [
|
27
|
+
"FulfillmentCenter",
|
28
|
+
"Inventory",
|
29
|
+
"OrderAcknowledgment",
|
30
|
+
"OrderAdjustment",
|
31
|
+
"OrderFulfillment",
|
32
|
+
"OrderReport",
|
33
|
+
"Override",
|
34
|
+
"Price",
|
35
|
+
"ProcessingReport",
|
36
|
+
"Product",
|
37
|
+
"ProductImage",
|
38
|
+
"Relationship",
|
39
|
+
"SettlementReport"
|
40
|
+
]
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Amazon
|
2
|
+
module MWS
|
3
|
+
|
4
|
+
class FeedSubmission < Response
|
5
|
+
xml_name "FeedSubmissionInfo"
|
6
|
+
|
7
|
+
xml_reader :id, :from => "FeedSubmissionId", :as => Integer
|
8
|
+
xml_reader :feed_type
|
9
|
+
xml_reader :submitted_date, :as => Time
|
10
|
+
xml_reader :feed_processing_status
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
class String
|
2
|
+
if RUBY_VERSION >= '1.9'
|
3
|
+
def valid_utf8?
|
4
|
+
dup.force_encoding('UTF-8').valid_encoding?
|
5
|
+
end
|
6
|
+
else
|
7
|
+
def valid_utf8?
|
8
|
+
scan(Regexp.new('[^\x00-\xa0]', nil, 'u')) { |s| s.unpack('U') }
|
9
|
+
true
|
10
|
+
rescue ArgumentError
|
11
|
+
false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_boolean
|
16
|
+
(self == "true") ? true : false
|
17
|
+
end
|
18
|
+
# By default, +camelize+ converts strings to UpperCamelCase. If the argument to +camelize+
|
19
|
+
# is set to <tt>:lower</tt> then +camelize+ produces lowerCamelCase.
|
20
|
+
#
|
21
|
+
# +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
|
22
|
+
#
|
23
|
+
# Examples:
|
24
|
+
# "active_record".camelize # => "ActiveRecord"
|
25
|
+
# "active_record".camelize(:lower) # => "activeRecord"
|
26
|
+
# "active_record/errors".camelize # => "ActiveRecord::Errors"
|
27
|
+
# "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
|
28
|
+
def camelize(first_letter_in_uppercase = true)
|
29
|
+
if first_letter_in_uppercase
|
30
|
+
self.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
|
31
|
+
else
|
32
|
+
self.to_s.first.downcase + camelize(lower_case_and_underscored_word)[1..-1]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def underscore
|
37
|
+
self.gsub(/::/, '/').
|
38
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
39
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
40
|
+
tr("-", "_").
|
41
|
+
downcase
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class Hash
|
46
|
+
def self.from_query_string(string)
|
47
|
+
query = string.split(/\?/)[-1]
|
48
|
+
parts = query.split(/&|=/)
|
49
|
+
Hash[*parts]
|
50
|
+
end
|
51
|
+
|
52
|
+
#take keys of hash and transform those to a symbols
|
53
|
+
def self.keys_to_s(value)
|
54
|
+
return value if not value.is_a?(Hash)
|
55
|
+
hash = value.inject({}){|memo,(k,v)| memo[k.to_s] = Hash.keys_to_s(v); memo}
|
56
|
+
return hash
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
class Array
|
62
|
+
def extract_options!
|
63
|
+
last.is_a?(::Hash) ? pop : {}
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_query_string
|
67
|
+
self.map { |k| "%s=%s" % [URI.encode(k[0].to_s), URI.encode(k[1].to_s)] }.join('&') unless self.empty?
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class Hash
|
72
|
+
def to_query_string
|
73
|
+
self.map { |k,v| "%s=%s" % [URI.encode(k.to_s), URI.encode(v.to_s)] }.join('&') unless self.empty?
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
class Object
|
78
|
+
def returning(value)
|
79
|
+
yield(value)
|
80
|
+
value
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
module Kernel
|
85
|
+
def __method__(depth = 0)
|
86
|
+
caller[depth][/`([^']+)'/, 1]
|
87
|
+
end if RUBY_VERSION <= '1.8.7'
|
88
|
+
|
89
|
+
def __called_from__
|
90
|
+
caller[1][/`([^']+)'/, 1]
|
91
|
+
end if RUBY_VERSION > '1.8.7'
|
92
|
+
|
93
|
+
def expirable_memoize(reload = false, storage = nil)
|
94
|
+
current_method = RUBY_VERSION > '1.8.7' ? __called_from__ : __method__(1)
|
95
|
+
storage = "@#{storage || current_method}"
|
96
|
+
if reload
|
97
|
+
instance_variable_set(storage, nil)
|
98
|
+
else
|
99
|
+
if cache = instance_variable_get(storage)
|
100
|
+
return cache
|
101
|
+
end
|
102
|
+
end
|
103
|
+
instance_variable_set(storage, yield)
|
104
|
+
end
|
105
|
+
|
106
|
+
def require_library_or_gem(library, gem_name = nil)
|
107
|
+
if RUBY_VERSION >= '1.9'
|
108
|
+
gem(gem_name || library, '>=0')
|
109
|
+
end
|
110
|
+
require library
|
111
|
+
rescue LoadError => library_not_installed
|
112
|
+
begin
|
113
|
+
require 'rubygems'
|
114
|
+
require library
|
115
|
+
rescue LoadError
|
116
|
+
raise library_not_installed
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
class Class # :nodoc:
|
122
|
+
def cattr_reader(*syms)
|
123
|
+
syms.flatten.each do |sym|
|
124
|
+
class_eval(<<-EOS, __FILE__, __LINE__)
|
125
|
+
unless defined? @@#{sym}
|
126
|
+
@@#{sym} = nil
|
127
|
+
end
|
128
|
+
|
129
|
+
def self.#{sym}
|
130
|
+
@@#{sym}
|
131
|
+
end
|
132
|
+
|
133
|
+
def #{sym}
|
134
|
+
@@#{sym}
|
135
|
+
end
|
136
|
+
EOS
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def cattr_writer(*syms)
|
141
|
+
syms.flatten.each do |sym|
|
142
|
+
class_eval(<<-EOS, __FILE__, __LINE__)
|
143
|
+
unless defined? @@#{sym}
|
144
|
+
@@#{sym} = nil
|
145
|
+
end
|
146
|
+
|
147
|
+
def self.#{sym}=(obj)
|
148
|
+
@@#{sym} = obj
|
149
|
+
end
|
150
|
+
|
151
|
+
def #{sym}=(obj)
|
152
|
+
@@#{sym} = obj
|
153
|
+
end
|
154
|
+
EOS
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def cattr_accessor(*syms)
|
159
|
+
cattr_reader(*syms)
|
160
|
+
cattr_writer(*syms)
|
161
|
+
end
|
162
|
+
end if Class.instance_methods(false).grep(/^cattr_(?:reader|writer|accessor)$/).empty?
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Memoizable
|
2
|
+
def memoize( name, cache = Hash.new )
|
3
|
+
original = "__unmemoized_#{name}__"
|
4
|
+
([Class, Module].include?(self.class) ? self : self.class).class_eval do
|
5
|
+
alias_method original, name
|
6
|
+
private original
|
7
|
+
define_method(name) { |*args| cache[args] ||= send(original, *args) }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,310 @@
|
|
1
|
+
module Amazon
|
2
|
+
module MWS
|
3
|
+
|
4
|
+
module Report
|
5
|
+
include Enumerations
|
6
|
+
# class << self
|
7
|
+
|
8
|
+
# The RequestReport operation requests the generation of a report, which
|
9
|
+
# creates a report request. Reports are retained for 90 days.
|
10
|
+
# Required Request Parameters
|
11
|
+
# ReportType - The type of report to request.
|
12
|
+
#
|
13
|
+
# Optional Request Parameters
|
14
|
+
# StartDate - Start of a date range used for selecting the data to report.
|
15
|
+
# EndDate - End of a date range used for selecting the data to report.
|
16
|
+
|
17
|
+
def request_report(report_type, params ={})
|
18
|
+
raise InvalidReportType if !REPORT_TYPES.include?(report_type)
|
19
|
+
# These may need to be processed
|
20
|
+
start_date = params[:start_date]
|
21
|
+
end_date = params[:end_date]
|
22
|
+
|
23
|
+
query_params = {
|
24
|
+
"Action" => "RequestReport",
|
25
|
+
"ReportType" => REPORT_TYPES[report_type]
|
26
|
+
}
|
27
|
+
|
28
|
+
query_params.merge!({"StartDate" => start_date}) if start_date
|
29
|
+
query_params.merge!({"EndDate" => end_date}) if end_date
|
30
|
+
|
31
|
+
response = get("/", query_params)
|
32
|
+
|
33
|
+
RequestReportResponse.format(response)
|
34
|
+
end
|
35
|
+
|
36
|
+
# GetReportRequestList
|
37
|
+
# --------------------
|
38
|
+
# The GetReportRequestList operation returns a list of report requests
|
39
|
+
# that match the query parameters.
|
40
|
+
#
|
41
|
+
# Amazon MWS limits calls to 1,000 total calls per hour per seller
|
42
|
+
# account, including calls to GetReportRequestList.
|
43
|
+
#
|
44
|
+
# The maximum number of results that will be returned in one call is one
|
45
|
+
# hundred. If there are additional results to return, HasNext will be
|
46
|
+
# returned in the response with a true value. To retrieve all the
|
47
|
+
# results, you can use the value of the NextToken parameter to call
|
48
|
+
# GetReportRequestListByNextToken until HasNext is false.
|
49
|
+
|
50
|
+
# Optional Request Parameters
|
51
|
+
#
|
52
|
+
# ReportRequestIdList - A structured list of report request IDs. If you
|
53
|
+
# pass in explicit IDs in this call, the other conditions, if specified,
|
54
|
+
# will be ignored.
|
55
|
+
#
|
56
|
+
# ReportTypeList - A structured ReportType list by which to filter
|
57
|
+
# reports.
|
58
|
+
#
|
59
|
+
# ReportProcessingStatusList -A structured list of report processing
|
60
|
+
# statuses by which to filter report requests.
|
61
|
+
#
|
62
|
+
# ReportProcessingStatus values:
|
63
|
+
#
|
64
|
+
# _SUBMITTED_
|
65
|
+
# _IN_PROGRESS_
|
66
|
+
# _CANCELLED_
|
67
|
+
# _DONE_
|
68
|
+
# _DONE_NO_DATA_
|
69
|
+
#
|
70
|
+
# MaxCount - Maximum number of reports to return in the list. If you
|
71
|
+
# specify a number greater than 100, the call will be rejected.
|
72
|
+
#
|
73
|
+
# RequestedFromDate - The earliest date you are looking for, in ISO8601
|
74
|
+
# date format (for example, "2008-07-03T18:12:22Z" or
|
75
|
+
# "2008-07-03T18:12:22.093-07:00").
|
76
|
+
#
|
77
|
+
# RequestedToDate - The most recent date you are looking for.
|
78
|
+
|
79
|
+
def get_report_request_list(params = {})
|
80
|
+
response = get("/", {"Action" => "GetReportRequestList"}.merge(params))
|
81
|
+
GetReportRequestListResponse.format(response)
|
82
|
+
end
|
83
|
+
# add a nice method
|
84
|
+
alias_method :report_request_list, :get_report_request_list
|
85
|
+
|
86
|
+
# GetReportRequestListByNextToken
|
87
|
+
# Description
|
88
|
+
#
|
89
|
+
# The GetReportRequestListByNextToken operation returns a list of report
|
90
|
+
# requests that match the query parameters, using the NextToken, which
|
91
|
+
# was supplied by a previous call to either
|
92
|
+
# GetReportRequestListByNextToken or a call to GetReportRequestList,
|
93
|
+
# where the value of HasNext was true in that previous call.
|
94
|
+
|
95
|
+
# NextToken
|
96
|
+
# Token returned in a previous call to either GetReportRequestList or
|
97
|
+
# GetReportRequestListByNextToken when the value of HasNext was true.
|
98
|
+
|
99
|
+
def get_report_request_list_by_next_token(next_token)
|
100
|
+
response =
|
101
|
+
post("/", {
|
102
|
+
"Action" => "GetReportRequestListByNextToken",
|
103
|
+
"NextToken" => next_token
|
104
|
+
})
|
105
|
+
|
106
|
+
GetReportRequestListByNextTokenResponse.format(response)
|
107
|
+
end
|
108
|
+
|
109
|
+
alias_method :report_request_list_by_next_token, :get_report_request_list_by_next_token
|
110
|
+
|
111
|
+
# GetReportRequestCount
|
112
|
+
# The GetReportRequestCount returns a count of report requests.
|
113
|
+
|
114
|
+
def get_report_request_count(params = {})
|
115
|
+
response = get("/", {"Action" => "GetReportRequestCount"})
|
116
|
+
GetReportRequestCountResponse.format(response)
|
117
|
+
end
|
118
|
+
# add a nice method
|
119
|
+
alias_method :report_request_count, :get_report_request_count
|
120
|
+
|
121
|
+
# CancelReportRequests
|
122
|
+
# The CancelReportRequests operation cancels one or more report
|
123
|
+
# requests, returning the count of the canceled report requests and the
|
124
|
+
# report request information. You can specify a number to cancel of
|
125
|
+
# greater than one hundred, but information will only be returned about
|
126
|
+
# the first one hundred report requests in the list. To return metadata
|
127
|
+
# about a greater number of canceled report requests, you can call
|
128
|
+
# GetReportRequestList. If report requests have already begun
|
129
|
+
# processing, they cannot be canceled.
|
130
|
+
|
131
|
+
#
|
132
|
+
# ReportRequestIdList
|
133
|
+
# A structured list of report request IDs. If you pass in explicit IDs in this call, the other conditions, if specified, will be ignored.
|
134
|
+
#
|
135
|
+
# ReportTypeList
|
136
|
+
# A structured ReportType list by which to filter reports.
|
137
|
+
#
|
138
|
+
# ReportProcessingStatusList
|
139
|
+
# A structured list of report processing statuses by which to filter report requests.
|
140
|
+
#
|
141
|
+
# ReportProcessingStatus
|
142
|
+
# _SUBMITTED_
|
143
|
+
# _IN_PROGRESS_
|
144
|
+
# _CANCELLED_
|
145
|
+
# _DONE_
|
146
|
+
# _DONE_NO_DATA_
|
147
|
+
#
|
148
|
+
# RequestedFromDate
|
149
|
+
# The earliest date you are looking for, in ISO8601 date format (for example, "2008-07-03T18:12:22Z" or "2008-07-03T18:12:22.093-07:00").
|
150
|
+
#
|
151
|
+
# RequestedToDate
|
152
|
+
# The most recent date you are looking for.
|
153
|
+
|
154
|
+
def cancel_report_requests(params = {})
|
155
|
+
response = get("/", {"Action" => "CancelReportRequests"}.merge(params))
|
156
|
+
CancelReportRequestsResponse.format(response)
|
157
|
+
end
|
158
|
+
|
159
|
+
# GetReportList
|
160
|
+
# The GetReportList operation returns a list of reports within the
|
161
|
+
# previous 90 days that match the query parameters. The maximum number
|
162
|
+
# of results that will be returned in one call is one hundred. If there
|
163
|
+
# are additional results to return, HasNext will be returned in the
|
164
|
+
# response with a true value. To retrieve all the results, you can use
|
165
|
+
# the value of the NextToken parameter to call GetReportListByNextToken
|
166
|
+
# until HasNext is false.
|
167
|
+
#
|
168
|
+
# Request Parameters
|
169
|
+
|
170
|
+
def get_report_list(params = {})
|
171
|
+
response = get("/", {"Action" => "GetReportList"}.merge(params))
|
172
|
+
GetReportListResponse.format(response)
|
173
|
+
end
|
174
|
+
|
175
|
+
alias_method :report_list, :get_report_list
|
176
|
+
|
177
|
+
# GetReportCount
|
178
|
+
# The GetReportCount operation returns a count of reports within the
|
179
|
+
# previous 90 days that are available for the seller to download.
|
180
|
+
|
181
|
+
# ReportTypeList
|
182
|
+
# A structured ReportType list by which to filter reports.
|
183
|
+
#
|
184
|
+
# Acknowledged
|
185
|
+
# Set to true to list reports that have been acknowledged with a prior
|
186
|
+
# call to UpdateReportAcknowledgements. Set to false to list reports
|
187
|
+
# that have not been acknowledged.
|
188
|
+
#
|
189
|
+
# AvailableFromDate
|
190
|
+
# The earliest date you are looking for, in ISO8601 date format (for
|
191
|
+
# example, "2008-07-03T18:12:22Z" or "2008-07-03T18:12:22.093-07:00").
|
192
|
+
#
|
193
|
+
# AvailableToDate
|
194
|
+
# The most recent date you are looking for.
|
195
|
+
|
196
|
+
def get_report_count(params = {})
|
197
|
+
response = get("/", {"Action" => "GetReportCount"})
|
198
|
+
GetReportCountResponse.format(response)
|
199
|
+
end
|
200
|
+
|
201
|
+
alias_method :report_count, :get_report_count
|
202
|
+
|
203
|
+
# GetReport
|
204
|
+
# Description
|
205
|
+
#
|
206
|
+
# The GetReport operation returns the contents of a report and the
|
207
|
+
# Content-MD5 header for the returned body. Reports are retained for 90
|
208
|
+
# days from the time they have been generated.
|
209
|
+
#
|
210
|
+
# Amazon MWS limits calls to 1,000 total calls per hour per seller
|
211
|
+
# account, including a limit of 60 calls per hour to GetReport.
|
212
|
+
#
|
213
|
+
# You should compute the MD5 hash of the HTTP body and compare that with
|
214
|
+
# the returned Content-MD5 header value. If they do not match, which
|
215
|
+
# means the body was corrupted during transmission, you should discard
|
216
|
+
# the result and automatically retry the call for up to three more
|
217
|
+
# times. Please notify us if you ever see such a corrupted body. You can
|
218
|
+
# contact us by using the contact form at http://mws.amazon.com
|
219
|
+
# (http://mws.amazon.com). For more information, see Using the
|
220
|
+
# Content-MD5 Header with SubmitFeed.
|
221
|
+
#
|
222
|
+
|
223
|
+
def get_report(report_id, params = {})
|
224
|
+
response = get("/", {"Action" => "GetReport", "ReportId" => report_id})
|
225
|
+
# TODO format response
|
226
|
+
end
|
227
|
+
alias_method :report, :get_report
|
228
|
+
|
229
|
+
# ManageReportSchedule
|
230
|
+
# The ManageReportSchedule operation creates, updates, or deletes a
|
231
|
+
# report schedule for a particular report type. Currently, only order
|
232
|
+
# reports can be scheduled.
|
233
|
+
#
|
234
|
+
# Request Parameters
|
235
|
+
#
|
236
|
+
# ReportType
|
237
|
+
# The type of reports that you want to schedule generation of.
|
238
|
+
# Currently, only order reports can be scheduled.
|
239
|
+
#
|
240
|
+
# Schedule
|
241
|
+
# A string that describes how often a ReportRequest should be created.
|
242
|
+
# The list of enumerated values is found in the enumeration topic,
|
243
|
+
# Schedule.
|
244
|
+
#
|
245
|
+
# ScheduledDate
|
246
|
+
# The date when the next report is scheduled to run. Limited to no more
|
247
|
+
# than 366 days in the future.
|
248
|
+
|
249
|
+
def manage_report_schedule(report_type, schedule, params={})
|
250
|
+
raise InvalidReportType if !REPORT_TYPES.include?(report_type)
|
251
|
+
raise InvalidSchedule if !SCHEDULE.include?(schedule)
|
252
|
+
|
253
|
+
response =
|
254
|
+
get("/", {
|
255
|
+
"Action" => "ManageReportSchedule",
|
256
|
+
"Schedule" => schedule,
|
257
|
+
"ReportType" => report_type
|
258
|
+
})
|
259
|
+
|
260
|
+
ManageReportScheduleResponse.format(reponse)
|
261
|
+
end
|
262
|
+
|
263
|
+
# GetReportScheduleList
|
264
|
+
# The GetReportScheduleList operation returns a list of report schedules
|
265
|
+
# that match the query parameters. Currently, only order reports can be
|
266
|
+
# scheduled.
|
267
|
+
#
|
268
|
+
# The maximum number of results that will be returned in one call is one
|
269
|
+
# hundred. If there are additional results to return, HasNext will be
|
270
|
+
# returned in the response with a true value. To retrieve all the
|
271
|
+
# results, you can use the value of the NextToken parameter to call
|
272
|
+
# GetReportScheduleListByNextToken until HasNext is false.
|
273
|
+
# [Note] Note
|
274
|
+
#
|
275
|
+
# For this release of Amazon MWS, only order reports can be scheduled,
|
276
|
+
# so HasNext will always be False.
|
277
|
+
|
278
|
+
|
279
|
+
def get_report_schedule_list(params = {})
|
280
|
+
response = get("/", {"Action" => "GetReportScheduleList"}.merge(params))
|
281
|
+
GetReportScheduleListResponse.format(response)
|
282
|
+
end
|
283
|
+
|
284
|
+
alias_method :report_schedule_list, :get_report_schedule_list
|
285
|
+
|
286
|
+
|
287
|
+
def get_report_schedule_list_by_next_token(next_token)
|
288
|
+
response =
|
289
|
+
get("/", {
|
290
|
+
"Action" => "GetReportScheduleListByNextToken",
|
291
|
+
"NextToken" => next_token
|
292
|
+
})
|
293
|
+
|
294
|
+
GetReportScheduleListByNextTokenResponse.format(response)
|
295
|
+
end
|
296
|
+
|
297
|
+
alias_method :report_schedule_list_by_next_token, :get_report_schedule_list_by_next_token
|
298
|
+
|
299
|
+
def get_report_schedule_count(params = {})
|
300
|
+
response = get("/", {"Action" => "GetReportScheduleCount"})
|
301
|
+
GetReportScheduleCountResponse.format(response)
|
302
|
+
end
|
303
|
+
|
304
|
+
alias_method :report_schedule_count, :get_report_schedule_count
|
305
|
+
|
306
|
+
end
|
307
|
+
|
308
|
+
# end
|
309
|
+
end
|
310
|
+
end
|