peddler 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +19 -12
- data/lib/mws/recommendations/client.rb +1 -1
- data/lib/mws/sellers/client.rb +1 -11
- data/lib/mws/webstore/client.rb +1 -1
- data/lib/peddler/client.rb +32 -18
- data/lib/peddler/error_parser.rb +26 -0
- data/lib/peddler/marketplace.rb +1 -0
- data/lib/peddler/parser.rb +4 -4
- data/lib/peddler/version.rb +1 -1
- data/lib/peddler/xml_parser.rb +5 -9
- data/lib/peddler/xml_response_parser.rb +17 -0
- data/test/unit/mws/test_sellers_client.rb +0 -12
- data/test/unit/peddler/test_client.rb +40 -42
- data/test/unit/peddler/test_error_parser.rb +42 -0
- data/test/unit/peddler/test_xml_parser.rb +10 -9
- data/test/unit/peddler/test_xml_response_parser.rb +23 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 000b1310894c1927903fdf0e03c017ba423028ab
|
4
|
+
data.tar.gz: 67bb363245360947b26876012006f517c5a02adf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88b46c45a57029d3e5491f0d81dfbd840a0ebd5247b217d4b61ca3e8b2996c170436d6538e704aecf0a2a9a931ecd3bfbb6af4784d5b4a5b2f4072edce817f96
|
7
|
+
data.tar.gz: 36f0952ba933db954280775c3182acdc0be8c8eda111b81a3af36a483b8472403cd017f816c70456ddbeb37d6893c58aba25403c22461b31d773dcabb52c1ea4
|
data/README.md
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
# Peddler
|
3
2
|
|
4
3
|
[](https://travis-ci.org/hakanensari/peddler)
|
@@ -39,29 +38,36 @@ client = MWS::Orders::Client.new(
|
|
39
38
|
aws_access_key_id: "baz",
|
40
39
|
aws_secret_access_key: "qux"
|
41
40
|
)
|
41
|
+
```
|
42
42
|
|
43
|
-
Alternatively,
|
43
|
+
Alternatively, set these globally in the shell.
|
44
44
|
|
45
|
-
```
|
45
|
+
```bash
|
46
46
|
export MWS_MARKETPLACE_ID=foo
|
47
47
|
export MWS_MERCHANT_ID=bar
|
48
48
|
export AWS_ACCESS_KEY_ID=baz
|
49
49
|
export AWS_SECRET_ACCESS_KEY=qux
|
50
50
|
```
|
51
51
|
|
52
|
+
You can now instantiate a client without passing credentials.
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
client = MWS::Orders::Client.new
|
56
|
+
```
|
57
|
+
|
52
58
|
If you are creating a client for another seller, pass the latter's `MWSAuthToken` to the client.
|
53
59
|
|
54
60
|
```ruby
|
55
61
|
client.auth_token = "corge"
|
56
62
|
```
|
57
63
|
|
58
|
-
Once you have a client with credentials, you
|
64
|
+
Once you have a client with valid credentials, you should be able to make requests to the API.
|
59
65
|
|
60
|
-
Peddler returns the response wrapped in a
|
66
|
+
Peddler returns the response wrapped in a parser that handles both XML documents and flat files.
|
61
67
|
|
62
68
|
```ruby
|
63
69
|
parser = client.get_service_status
|
64
|
-
parser.parse # will return Hash or
|
70
|
+
parser.parse # will return a Hash or CSV object
|
65
71
|
```
|
66
72
|
|
67
73
|
You can swap the default parser with a purpose-built one.
|
@@ -75,20 +81,21 @@ For a sample implementation, see my [MWS Orders](https://github.com/hakanensari/
|
|
75
81
|
Finally, you can handle network errors caused by throttling or other transient issues by defining an error handler.
|
76
82
|
|
77
83
|
```ruby
|
78
|
-
MWS::Orders::Client.on_error do |
|
79
|
-
if response.status == 503
|
80
|
-
logger.
|
84
|
+
MWS::Orders::Client.on_error do |e|
|
85
|
+
if e.response.status == 503
|
86
|
+
logger.warn e.response.message
|
81
87
|
end
|
82
88
|
end
|
83
89
|
```
|
84
90
|
|
85
|
-
Alternatively,
|
91
|
+
Alternatively, rescue.
|
86
92
|
|
87
93
|
```ruby
|
88
94
|
begin
|
89
95
|
client.some_method
|
90
|
-
rescue Excon::Errors::ServiceUnavailable
|
91
|
-
|
96
|
+
rescue Excon::Errors::ServiceUnavailable => e
|
97
|
+
logger.warn e.response.message
|
98
|
+
retry
|
92
99
|
end
|
93
100
|
```
|
94
101
|
|
@@ -28,7 +28,7 @@ module MWS
|
|
28
28
|
# categories for a specific marketplace
|
29
29
|
#
|
30
30
|
# @see http://docs.developer.amazonservices.com/en_US/recommendations/Recommendations_ListRecommendations.html
|
31
|
-
# @overload list_recommendations(opts = { marketplace_id:
|
31
|
+
# @overload list_recommendations(opts = { marketplace_id: primary_marketplace_id })
|
32
32
|
# @param opts [Hash]
|
33
33
|
# @option opts [String] :marketplace_id
|
34
34
|
# @option opts [String] :recommendation_category
|
data/lib/mws/sellers/client.rb
CHANGED
@@ -31,22 +31,12 @@ module MWS
|
|
31
31
|
|
32
32
|
# Gets the service status of the API
|
33
33
|
#
|
34
|
-
# @see http://docs.developer.amazonservices.com/en_US/sellers/
|
34
|
+
# @see http://docs.developer.amazonservices.com/en_US/sellers/Sellers_GetServiceStatus.html
|
35
35
|
# @return [Peddler::XMLParser]
|
36
36
|
def get_service_status
|
37
37
|
operation('GetServiceStatus')
|
38
38
|
run
|
39
39
|
end
|
40
|
-
|
41
|
-
# Gets the MWS Auth Token of the seller account
|
42
|
-
#
|
43
|
-
# @see http://docs.developer.amazonservices.com/en_US/auth_token/AuthToken_GetAuthToken.html
|
44
|
-
# @todo Remove this method after June 30, 2015 as it will no longer be available.
|
45
|
-
# @return [Peddler::XMLParser]
|
46
|
-
def get_auth_token
|
47
|
-
operation('GetAuthToken')
|
48
|
-
run
|
49
|
-
end
|
50
40
|
end
|
51
41
|
end
|
52
42
|
end
|
data/lib/mws/webstore/client.rb
CHANGED
@@ -20,7 +20,7 @@ module MWS
|
|
20
20
|
# including the items that are subscribed to
|
21
21
|
#
|
22
22
|
# @see http://docs.developer.amazonservices.com/en_US/webstore/Webstore_ListSubscriptionsCount.html
|
23
|
-
# @overload list_subscriptions_count(subscription_state, opts = { marketplace_id:
|
23
|
+
# @overload list_subscriptions_count(subscription_state, opts = { marketplace_id: primary_marketplace_id })
|
24
24
|
# @param subscription_state [String]
|
25
25
|
# @param opts [Hash]
|
26
26
|
# @option opts [String] :marketplace_id
|
data/lib/peddler/client.rb
CHANGED
@@ -69,14 +69,16 @@ module Peddler
|
|
69
69
|
|
70
70
|
def inherited(base)
|
71
71
|
base.params(params)
|
72
|
-
base.on_error(&@error_handler)
|
72
|
+
base.on_error(&@error_handler)
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
@error_handler = -> (e) { fail e }
|
77
|
+
|
76
78
|
# Creates a new client instance
|
77
79
|
#
|
78
80
|
# @param opts [Hash]
|
79
|
-
# @option opts [String] :
|
81
|
+
# @option opts [String] :primary_marketplace_id
|
80
82
|
# @option opts [String] :merchant_id
|
81
83
|
# @option opts [String] :aws_access_key_id
|
82
84
|
# @option opts [String] :aws_secret_access_key
|
@@ -97,12 +99,12 @@ module Peddler
|
|
97
99
|
@primary_marketplace_id ||= ENV['MWS_MARKETPLACE_ID']
|
98
100
|
end
|
99
101
|
|
100
|
-
# @deprecated Use {#primary_marketplace_id}
|
102
|
+
# @deprecated Use {#primary_marketplace_id}.
|
101
103
|
def marketplace_id
|
102
104
|
@primary_marketplace_id
|
103
105
|
end
|
104
106
|
|
105
|
-
# @deprecated Use {#primary_marketplace_id=}
|
107
|
+
# @deprecated Use {#primary_marketplace_id=}.
|
106
108
|
def marketplace_id=(marketplace_id)
|
107
109
|
@primary_marketplace_id = marketplace_id
|
108
110
|
end
|
@@ -165,24 +167,14 @@ module Peddler
|
|
165
167
|
end
|
166
168
|
|
167
169
|
# @api private
|
168
|
-
# rubocop:disable AbcSize, MethodLength
|
169
170
|
def run
|
170
|
-
opts =
|
171
|
-
opts.store(:body, body) if body
|
171
|
+
opts = build_options
|
172
172
|
opts.store(:response_block, Proc.new) if block_given?
|
173
173
|
res = post(opts)
|
174
174
|
|
175
175
|
parser.new(res, encoding)
|
176
176
|
rescue Excon::Errors::Error => e
|
177
|
-
handle_error(e)
|
178
|
-
rescue NoMethodError => e
|
179
|
-
if e.message == "undefined method `new' for #{parser}"
|
180
|
-
warn "[DEPRECATION] `Parser.parse` is deprecated. "\
|
181
|
-
"Please use `Parser.new` instead."
|
182
|
-
parser.parse(res, encoding)
|
183
|
-
else
|
184
|
-
raise
|
185
|
-
end
|
177
|
+
handle_error(e)
|
186
178
|
end
|
187
179
|
|
188
180
|
private
|
@@ -207,9 +199,31 @@ module Peddler
|
|
207
199
|
self.class.parser
|
208
200
|
end
|
209
201
|
|
202
|
+
def build_options
|
203
|
+
opts = defaults.merge(query: operation, headers: headers)
|
204
|
+
body ? opts.update(body: body) : opts
|
205
|
+
end
|
206
|
+
|
210
207
|
def handle_error(e)
|
211
|
-
|
212
|
-
error_handler.call(e
|
208
|
+
e = decorate_error(e)
|
209
|
+
error_handler.call(*deprecate_error_handler_arguments(e))
|
210
|
+
end
|
211
|
+
|
212
|
+
def decorate_error(e)
|
213
|
+
if e.is_a?(::Excon::Errors::HTTPStatusError)
|
214
|
+
e.instance_variable_set(:@response, ErrorParser.new(e.response))
|
215
|
+
end
|
216
|
+
|
217
|
+
e
|
218
|
+
end
|
219
|
+
|
220
|
+
def deprecate_error_handler_arguments(e)
|
221
|
+
if error_handler.parameters.size == 2
|
222
|
+
warn "[DEPRECATION] Error handler now expects exception as argument."
|
223
|
+
[e.request, e.response]
|
224
|
+
else
|
225
|
+
[e]
|
226
|
+
end
|
213
227
|
end
|
214
228
|
end
|
215
229
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'peddler/xml_parser'
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
# @api private
|
5
|
+
class ErrorParser < XMLParser
|
6
|
+
def message
|
7
|
+
parse['Message']
|
8
|
+
end
|
9
|
+
|
10
|
+
def type
|
11
|
+
parse['Type']
|
12
|
+
end
|
13
|
+
|
14
|
+
def code
|
15
|
+
parse['Code']
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def find_data
|
21
|
+
xml
|
22
|
+
.fetch('ErrorResponse', {})
|
23
|
+
.fetch('Error', {})
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/peddler/marketplace.rb
CHANGED
@@ -11,6 +11,7 @@ module Peddler
|
|
11
11
|
'A21TJRUUN4KGV' => 'mws.amazonservices.in',
|
12
12
|
'APJ6JRA9NG5V4' => 'mws-eu.amazonservices.com',
|
13
13
|
'A1VC38T7YXB528' => 'mws.amazonservices.jp',
|
14
|
+
'A1AM78C64UM0Y8' => 'mws.amazonservices.com.mx',
|
14
15
|
'ATVPDKIKX0DER' => 'mws.amazonservices.com'
|
15
16
|
}
|
16
17
|
|
data/lib/peddler/parser.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
require 'peddler/flat_file_parser'
|
2
|
-
require 'peddler/
|
2
|
+
require 'peddler/xml_response_parser'
|
3
3
|
|
4
4
|
module Peddler
|
5
5
|
# @api private
|
6
6
|
module Parser
|
7
7
|
class << self
|
8
|
-
# The inevitable messiness of massaging data produced by a motley
|
9
|
-
# Amazon developers
|
8
|
+
# The inevitable-seeming messiness of massaging data produced by a motley
|
9
|
+
# army of Amazon developers
|
10
10
|
def new(res, encoding = 'ISO-8859-1')
|
11
11
|
# Don't parse if there's no body
|
12
12
|
return res unless res.body
|
13
13
|
|
14
14
|
content_type = res.headers['Content-Type']
|
15
15
|
if content_type.start_with?('text/xml')
|
16
|
-
|
16
|
+
XMLResponseParser.new(res)
|
17
17
|
else
|
18
18
|
# Amazon returns a variety of content types for flat files, so we
|
19
19
|
# simply assume that anything not XML is a flat file rather than code
|
data/lib/peddler/version.rb
CHANGED
data/lib/peddler/xml_parser.rb
CHANGED
@@ -4,12 +4,8 @@ require 'multi_xml'
|
|
4
4
|
module Peddler
|
5
5
|
# @api private
|
6
6
|
class XMLParser < SimpleDelegator
|
7
|
-
def next_token
|
8
|
-
parse.fetch('NextToken', false)
|
9
|
-
end
|
10
|
-
|
11
7
|
def parse
|
12
|
-
@
|
8
|
+
@data ||= find_data
|
13
9
|
end
|
14
10
|
|
15
11
|
def xml
|
@@ -17,14 +13,14 @@ module Peddler
|
|
17
13
|
end
|
18
14
|
|
19
15
|
def valid?
|
20
|
-
|
16
|
+
return unless headers['Content-Length']
|
17
|
+
headers['Content-Length'].to_i == body.size
|
21
18
|
end
|
22
19
|
|
23
20
|
private
|
24
21
|
|
25
|
-
def
|
26
|
-
|
27
|
-
results ? results.last : nil
|
22
|
+
def find_data
|
23
|
+
fail NotImplementedError
|
28
24
|
end
|
29
25
|
end
|
30
26
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'peddler/xml_parser'
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
# @api private
|
5
|
+
class XMLResponseParser < XMLParser
|
6
|
+
def next_token
|
7
|
+
parse.fetch('NextToken', false)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def find_data
|
13
|
+
results = xml.values.first.find { |k, _| k.include?('Result') }
|
14
|
+
results ? results.last : nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -42,16 +42,4 @@ class TestMWSSellersClient < MiniTest::Test
|
|
42
42
|
|
43
43
|
assert_equal operation, @client.operation
|
44
44
|
end
|
45
|
-
|
46
|
-
def test_gets_auth_token
|
47
|
-
operation = {
|
48
|
-
'Action' => 'GetAuthToken'
|
49
|
-
}
|
50
|
-
|
51
|
-
@client.stub(:run, nil) do
|
52
|
-
@client.get_auth_token
|
53
|
-
end
|
54
|
-
|
55
|
-
assert_equal operation, @client.operation
|
56
|
-
end
|
57
45
|
end
|
@@ -143,14 +143,12 @@ class TestPeddlerClient < MiniTest::Test
|
|
143
143
|
@client.run
|
144
144
|
end
|
145
145
|
|
146
|
-
@klass.on_error do |
|
147
|
-
assert_equal 503,
|
146
|
+
@klass.on_error do |e|
|
147
|
+
assert_equal 503, e.response.status
|
148
148
|
end
|
149
|
-
|
150
|
-
@client.run
|
149
|
+
@client.run # no longer raises
|
151
150
|
|
152
151
|
Excon.stubs.clear
|
153
|
-
@klass.instance_variable_set(:@error_handler, nil)
|
154
152
|
end
|
155
153
|
|
156
154
|
def test_error_callback_on_instance
|
@@ -160,10 +158,9 @@ class TestPeddlerClient < MiniTest::Test
|
|
160
158
|
@client.run
|
161
159
|
end
|
162
160
|
|
163
|
-
@client.on_error do |
|
164
|
-
assert_equal 503,
|
161
|
+
@client.on_error do |e|
|
162
|
+
assert_equal 503, e.response.status
|
165
163
|
end
|
166
|
-
|
167
164
|
@client.run
|
168
165
|
|
169
166
|
Excon.stubs.clear
|
@@ -172,53 +169,54 @@ class TestPeddlerClient < MiniTest::Test
|
|
172
169
|
def test_error_callback_on_client_ancestor
|
173
170
|
Excon.stub({}, status: 503)
|
174
171
|
|
175
|
-
|
176
|
-
|
177
|
-
end
|
178
|
-
|
179
|
-
Peddler::Client.on_error do |_, res|
|
180
|
-
assert_equal 503, res.status
|
172
|
+
@klass.on_error do |e|
|
173
|
+
assert_equal 503, e.response.status
|
181
174
|
end
|
175
|
+
@client.run # no longer raises
|
182
176
|
|
183
177
|
klass = Class.new(Peddler::Client)
|
184
178
|
klass.parser = Parser
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
179
|
+
other_client = klass.new
|
180
|
+
other_client.aws_access_key_id = 'key'
|
181
|
+
other_client.aws_secret_access_key = 'secret'
|
182
|
+
other_client.merchant_id = 'seller'
|
183
|
+
other_client.primary_marketplace_id = 'ATVPDKIKX0DER' # US
|
184
|
+
other_client.operation('Foo')
|
185
|
+
assert_raises(Excon::Errors::ServiceUnavailable) do
|
186
|
+
other_client.run
|
187
|
+
end
|
192
188
|
|
193
189
|
Excon.stubs.clear
|
194
|
-
Peddler::Client.instance_variable_set(:@error_handler, nil)
|
195
190
|
end
|
196
191
|
|
197
|
-
def
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
192
|
+
def test_decorates_error_response
|
193
|
+
res = {
|
194
|
+
body: '<ErrorResponse><Error>Foo</Error></ErrorResponse>',
|
195
|
+
status: 503
|
196
|
+
}
|
197
|
+
Excon.stub({}, res)
|
198
|
+
e = nil
|
199
|
+
|
200
|
+
begin
|
201
|
+
@client.run
|
202
|
+
rescue => e
|
203
|
+
assert e.response.parse
|
207
204
|
end
|
205
|
+
|
206
|
+
assert e
|
208
207
|
end
|
209
208
|
|
210
|
-
def
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
209
|
+
def test_deprecated_error_callback
|
210
|
+
Excon.stub({}, status: 503)
|
211
|
+
|
212
|
+
@client.on_error do |_, res|
|
213
|
+
assert_equal 503, res.status
|
215
214
|
end
|
216
|
-
|
217
|
-
|
218
|
-
assert_raises NoMethodError do
|
219
|
-
@client.run
|
220
|
-
end
|
215
|
+
assert_output nil, /DEPRECATION/ do
|
216
|
+
@client.run
|
221
217
|
end
|
218
|
+
|
219
|
+
Excon.stubs.clear
|
222
220
|
end
|
223
221
|
|
224
222
|
def test_deprecated_marketplace_id_accessor
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'peddler/error_parser'
|
3
|
+
|
4
|
+
class TestPeddlerErrorParser < MiniTest::Test
|
5
|
+
def setup
|
6
|
+
body = <<-XML
|
7
|
+
<ErrorResponse>
|
8
|
+
<Error>
|
9
|
+
<Type>Foo</Type>
|
10
|
+
<Code>Bar</Code>
|
11
|
+
<Message>Baz</Message>
|
12
|
+
</Error>
|
13
|
+
<RequestID>123</RequestID>
|
14
|
+
</ErrorResponse>
|
15
|
+
XML
|
16
|
+
res = OpenStruct.new(
|
17
|
+
body: body,
|
18
|
+
headers: {
|
19
|
+
'Content-Type' => 'text/xml',
|
20
|
+
'Content-Length' => body.size.to_s
|
21
|
+
}
|
22
|
+
)
|
23
|
+
|
24
|
+
@parser = Peddler::ErrorParser.new(res)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_parses_data
|
28
|
+
assert @parser.parse
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_has_a_message
|
32
|
+
assert @parser.message
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_has_code
|
36
|
+
assert @parser.code
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_has_type
|
40
|
+
assert @parser.type
|
41
|
+
end
|
42
|
+
end
|
@@ -3,22 +3,23 @@ require 'peddler/xml_parser'
|
|
3
3
|
|
4
4
|
class TestPeddlerXMLParser < MiniTest::Test
|
5
5
|
def setup
|
6
|
-
body = '<
|
7
|
-
|
6
|
+
body = '<Foo>Bar</Foo>'
|
7
|
+
|
8
8
|
res = OpenStruct.new(
|
9
9
|
body: body,
|
10
|
-
headers: {
|
10
|
+
headers: {
|
11
|
+
'Content-Type' => 'text/xml',
|
12
|
+
'Content-Length' => body.size.to_s
|
13
|
+
}
|
11
14
|
)
|
12
15
|
|
13
16
|
@parser = Peddler::XMLParser.new(res)
|
14
17
|
end
|
15
18
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
def test_next_token
|
21
|
-
assert_equal '123', @parser.next_token
|
19
|
+
def test_does_not_implement_parsing
|
20
|
+
assert_raises NotImplementedError do
|
21
|
+
@parser.parse
|
22
|
+
end
|
22
23
|
end
|
23
24
|
|
24
25
|
def test_validates
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'peddler/xml_response_parser'
|
3
|
+
|
4
|
+
class TestPeddlerXMLResponseParser < MiniTest::Test
|
5
|
+
def setup
|
6
|
+
body = '<Response><Result><NextToken>123</NextToken>'\
|
7
|
+
'<Foo>Bar</Foo></Result></Response>'
|
8
|
+
res = OpenStruct.new(
|
9
|
+
body: body,
|
10
|
+
headers: { 'Content-Type' => 'text/xml', 'Content-Length' => '78' }
|
11
|
+
)
|
12
|
+
|
13
|
+
@parser = Peddler::XMLResponseParser.new(res)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_parses_data
|
17
|
+
assert_equal 'Bar', @parser.parse['Foo']
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_next_token
|
21
|
+
assert_equal '123', @parser.next_token
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peddler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hakan Ensari
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jeff
|
@@ -78,6 +78,7 @@ files:
|
|
78
78
|
- lib/mws/webstore/client.rb
|
79
79
|
- lib/peddler.rb
|
80
80
|
- lib/peddler/client.rb
|
81
|
+
- lib/peddler/error_parser.rb
|
81
82
|
- lib/peddler/flat_file_parser.rb
|
82
83
|
- lib/peddler/marketplace.rb
|
83
84
|
- lib/peddler/operation.rb
|
@@ -85,6 +86,7 @@ files:
|
|
85
86
|
- lib/peddler/structured_list.rb
|
86
87
|
- lib/peddler/version.rb
|
87
88
|
- lib/peddler/xml_parser.rb
|
89
|
+
- lib/peddler/xml_response_parser.rb
|
88
90
|
- test/helper.rb
|
89
91
|
- test/integration/test_cart_information.rb
|
90
92
|
- test/integration/test_customer_information.rb
|
@@ -116,12 +118,14 @@ files:
|
|
116
118
|
- test/unit/mws/test_subscriptions_client.rb
|
117
119
|
- test/unit/mws/test_webstore_client.rb
|
118
120
|
- test/unit/peddler/test_client.rb
|
121
|
+
- test/unit/peddler/test_error_parser.rb
|
119
122
|
- test/unit/peddler/test_flat_file_parser.rb
|
120
123
|
- test/unit/peddler/test_marketplace.rb
|
121
124
|
- test/unit/peddler/test_operation.rb
|
122
125
|
- test/unit/peddler/test_parser.rb
|
123
126
|
- test/unit/peddler/test_structured_list.rb
|
124
127
|
- test/unit/peddler/test_xml_parser.rb
|
128
|
+
- test/unit/peddler/test_xml_response_parser.rb
|
125
129
|
- test/unit/test_mws.rb
|
126
130
|
- test/vcr_cassettes/CartInformation.yml
|
127
131
|
- test/vcr_cassettes/CustomerInformation.yml
|
@@ -193,12 +197,14 @@ test_files:
|
|
193
197
|
- test/unit/mws/test_subscriptions_client.rb
|
194
198
|
- test/unit/mws/test_webstore_client.rb
|
195
199
|
- test/unit/peddler/test_client.rb
|
200
|
+
- test/unit/peddler/test_error_parser.rb
|
196
201
|
- test/unit/peddler/test_flat_file_parser.rb
|
197
202
|
- test/unit/peddler/test_marketplace.rb
|
198
203
|
- test/unit/peddler/test_operation.rb
|
199
204
|
- test/unit/peddler/test_parser.rb
|
200
205
|
- test/unit/peddler/test_structured_list.rb
|
201
206
|
- test/unit/peddler/test_xml_parser.rb
|
207
|
+
- test/unit/peddler/test_xml_response_parser.rb
|
202
208
|
- test/unit/test_mws.rb
|
203
209
|
- test/vcr_cassettes/CartInformation.yml
|
204
210
|
- test/vcr_cassettes/CustomerInformation.yml
|