amazon-ecs 2.5.0 → 2.6.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 +5 -5
- data/.travis.yml +7 -0
- data/CHANGELOG +5 -0
- data/README.md +14 -12
- data/amazon-ecs.gemspec +3 -18
- data/lib/amazon/ecs.rb +8 -18
- data/test/amazon/ecs_test.rb +44 -48
- metadata +8 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 293020f2c842d45f159daf0c0479a7acc50c00e513baf60523e1c64ba6f4194a
|
4
|
+
data.tar.gz: 7006f32167b832f9d13ad87825779a0e9b34b5efe17cace5d675addbeeddf169
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7b7c409eba77b66b8b99bf58dc711a05ea2246564dc17ea82c80875cefd28a3989639b56271a1215aef8aaabf348e77e7acd22737b97830fbb36bd9fa063dbb
|
7
|
+
data.tar.gz: bb6dc4f05976990f9ab19e51817355b55ad0596622fcecacac1129d431b4b069e399ef245359ba4b50307ed9ad065c4857b69cdfbe27e989e98e664db714241c
|
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# amazon-ecs
|
2
2
|
|
3
|
+
[](https://travis-ci.org/jugend/amazon-ecs)
|
4
|
+
|
3
5
|
`amazon-ecs` is a generic Ruby wrapper to access Amazon Product Advertising API.
|
4
6
|
|
5
7
|
The library wraps around [Nokogiri](http://www.nokogiri.org/) element object. It provides an easy access to the XML response elements and attributes.
|
@@ -18,7 +20,7 @@ gem install amazon-ecs
|
|
18
20
|
```ruby
|
19
21
|
require 'amazon/ecs'
|
20
22
|
|
21
|
-
#
|
23
|
+
# Default options:
|
22
24
|
# options[:version] => "2013-08-01"
|
23
25
|
# options[:service] => "AWSECommerceService"
|
24
26
|
Amazon::Ecs.configure do |options|
|
@@ -27,16 +29,16 @@ Amazon::Ecs.configure do |options|
|
|
27
29
|
options[:associate_tag] = '[your associate tag]'
|
28
30
|
end
|
29
31
|
|
30
|
-
#
|
32
|
+
# To replace default options
|
31
33
|
# Amazon::Ecs.options = { ... }
|
32
34
|
|
33
|
-
#
|
35
|
+
# To override default options
|
34
36
|
res = Amazon::Ecs.item_search('ruby', {:response_group => 'Medium', :sort => 'salesrank'})
|
35
37
|
|
36
|
-
#
|
38
|
+
# Search Amazon UK
|
37
39
|
res = Amazon::Ecs.item_search('ruby', :country => 'uk')
|
38
40
|
|
39
|
-
#
|
41
|
+
# Search all items, default search index: Books
|
40
42
|
res = Amazon::Ecs.item_search('ruby', :search_index => 'All')
|
41
43
|
|
42
44
|
res.is_valid_request?
|
@@ -46,13 +48,13 @@ res.total_pages
|
|
46
48
|
res.total_results
|
47
49
|
res.item_page # current page no if :item_page option is provided
|
48
50
|
|
49
|
-
#
|
51
|
+
# Find elements matching 'Item' in response object
|
50
52
|
res.items.each do |item|
|
51
|
-
#
|
53
|
+
# Retrieve string value using XML path
|
52
54
|
item.get('ASIN')
|
53
55
|
item.get('ItemAttributes/Title')
|
54
56
|
|
55
|
-
#
|
57
|
+
# Return Amazon::Element instance
|
56
58
|
item_attributes = item.get_element('ItemAttributes')
|
57
59
|
item_attributes.get('Title')
|
58
60
|
|
@@ -60,14 +62,14 @@ res.items.each do |item|
|
|
60
62
|
item_attributes.get_array('Author') # ['Author 1', 'Author 2', ...]
|
61
63
|
item_attributes.get('Author') # 'Author 1'
|
62
64
|
|
63
|
-
#
|
65
|
+
# Return a hash object with the element names as the keys
|
64
66
|
item.get_hash('SmallImage') # {:url => ..., :width => ..., :height => ...}
|
65
67
|
|
66
|
-
#
|
68
|
+
# Return the first matching path
|
67
69
|
item_height = item.get_element('ItemDimensions/Height')
|
68
70
|
item_height.attributes['Units'] # 'hundredths-inches'
|
69
71
|
|
70
|
-
#
|
72
|
+
# There are two ways to find elements:
|
71
73
|
# 1) return an array of Amazon::Element
|
72
74
|
reviews = item.get_elements('EditorialReview')
|
73
75
|
reviews.each do |review|
|
@@ -88,7 +90,7 @@ end
|
|
88
90
|
```ruby
|
89
91
|
# Item lookup
|
90
92
|
res = Amazon::Ecs.item_lookup("0974514055")
|
91
|
-
item =
|
93
|
+
item = res.get_element("Item")
|
92
94
|
|
93
95
|
# Browse node lookup
|
94
96
|
res = Amazon::Ecs.browse_node_lookup("17")
|
data/amazon-ecs.gemspec
CHANGED
@@ -11,24 +11,9 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.homepage = %q{https://github.com/jugend/amazon-ecs}
|
12
12
|
gem.summary = %q{Generic Amazon Product Advertising Ruby API.}
|
13
13
|
gem.description = %q{Generic Amazon Product Advertising Ruby API.}
|
14
|
-
|
14
|
+
gem.required_ruby_version = '>= 2.3'
|
15
15
|
gem.files = `git ls-files`.split("\n")
|
16
16
|
gem.test_files = `git ls-files -- test/*`.split("\n")
|
17
17
|
gem.require_paths = ["lib"]
|
18
|
-
|
19
|
-
|
20
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
21
|
-
gem.specification_version = 2
|
22
|
-
|
23
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
24
|
-
gem.add_runtime_dependency("nokogiri", "~> 1.4")
|
25
|
-
gem.add_runtime_dependency("ruby-hmac", "~> 0.3")
|
26
|
-
else
|
27
|
-
gem.add_dependency("nokogiri", "~> 1.4")
|
28
|
-
gem.add_dependency("ruby-hmac", "~> 0.3")
|
29
|
-
end
|
30
|
-
else
|
31
|
-
gem.add_dependency("nokogiri", "~> 1.4")
|
32
|
-
gem.add_dependency("ruby-hmac", "~> 0.3")
|
33
|
-
end
|
34
|
-
end
|
18
|
+
gem.add_runtime_dependency("nokogiri", "~> 1.10")
|
19
|
+
end
|
data/lib/amazon/ecs.rb
CHANGED
@@ -24,7 +24,6 @@
|
|
24
24
|
require 'net/http'
|
25
25
|
require 'nokogiri'
|
26
26
|
require 'cgi'
|
27
|
-
require 'hmac-sha2'
|
28
27
|
require 'base64'
|
29
28
|
require 'openssl'
|
30
29
|
|
@@ -32,7 +31,7 @@ module Amazon
|
|
32
31
|
class RequestError < StandardError; end
|
33
32
|
|
34
33
|
class Ecs
|
35
|
-
VERSION = '2.
|
34
|
+
VERSION = '2.6.0'
|
36
35
|
|
37
36
|
SERVICE_URLS = {
|
38
37
|
:us => 'http://webservices.amazon.com/onca/xml',
|
@@ -46,14 +45,10 @@ module Amazon
|
|
46
45
|
:es => 'http://webservices.amazon.es/onca/xml',
|
47
46
|
:in => 'http://webservices.amazon.in/onca/xml',
|
48
47
|
:br => 'http://webservices.amazon.com.br/onca/xml',
|
49
|
-
:mx => 'http://webservices.amazon.com.mx/onca/xml'
|
48
|
+
:mx => 'http://webservices.amazon.com.mx/onca/xml',
|
49
|
+
:au => 'http://webservices.amazon.com.au/onca/xml'
|
50
50
|
}
|
51
51
|
|
52
|
-
OPENSSL_DIGEST_SUPPORT = OpenSSL::Digest.constants.include?( 'SHA256' ) ||
|
53
|
-
OpenSSL::Digest.constants.include?( :SHA256 )
|
54
|
-
|
55
|
-
OPENSSL_DIGEST = OpenSSL::Digest.new( 'sha256' ) if OPENSSL_DIGEST_SUPPORT
|
56
|
-
|
57
52
|
@@options = {
|
58
53
|
:version => "2013-08-01",
|
59
54
|
:service => "AWSECommerceService"
|
@@ -61,6 +56,9 @@ module Amazon
|
|
61
56
|
|
62
57
|
@@debug = ENV['DEBUG_AMAZON_ECS'] || false
|
63
58
|
|
59
|
+
# Error response from Amazon API may contain Access key ID
|
60
|
+
@@hideAPIError = ENV['HIDE_AMAZON_ECS_API_ERROR'] || false
|
61
|
+
|
64
62
|
# Default search options
|
65
63
|
def self.options
|
66
64
|
@@options
|
@@ -142,7 +140,7 @@ module Amazon
|
|
142
140
|
ecs_res = Response.new(res.body)
|
143
141
|
unless res.kind_of? Net::HTTPSuccess
|
144
142
|
err_msg = "HTTP Response: #{res.code} #{res.message}"
|
145
|
-
err_msg += " - #{ecs_res.error}" if ecs_res.error
|
143
|
+
err_msg += " - #{ecs_res.error}" if ecs_res.error && !@@hideAPIError
|
146
144
|
raise Amazon::RequestError, err_msg
|
147
145
|
end
|
148
146
|
ecs_res
|
@@ -305,15 +303,7 @@ module Amazon
|
|
305
303
|
|
306
304
|
def self.sign_request(url, key)
|
307
305
|
return nil if key.nil?
|
308
|
-
|
309
|
-
if OPENSSL_DIGEST_SUPPORT
|
310
|
-
signature = OpenSSL::HMAC.digest(OPENSSL_DIGEST, key, url)
|
311
|
-
signature = [signature].pack('m').chomp
|
312
|
-
else
|
313
|
-
signature = Base64.encode64(HMAC::SHA256.digest(key, url)).strip
|
314
|
-
end
|
315
|
-
signature = CGI.escape(signature)
|
316
|
-
return signature
|
306
|
+
return CGI.escape(Base64.strict_encode64(OpenSSL::HMAC.digest("SHA256", key, url)))
|
317
307
|
end
|
318
308
|
end
|
319
309
|
|
data/test/amazon/ecs_test.rb
CHANGED
@@ -19,52 +19,54 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
19
19
|
options[:associate_tag] = 'bookjetty-20'
|
20
20
|
end
|
21
21
|
|
22
|
+
# Amazon throwing an error if requests are submitted too quickly
|
23
|
+
AMAZON_ECS_REQUEST_DELAY = ENV['AMAZON_ECS_REQUEST_DELAY'] || 0
|
24
|
+
|
25
|
+
def throttle_request(delay = AMAZON_ECS_REQUEST_DELAY.to_i)
|
26
|
+
sleep(delay) if delay > 0
|
27
|
+
end
|
28
|
+
|
22
29
|
# To print debug information
|
23
30
|
# Amazon::Ecs.debug = true
|
24
31
|
|
32
|
+
def setup
|
33
|
+
throttle_request
|
34
|
+
end
|
35
|
+
|
25
36
|
# Test item_search
|
26
37
|
def test_item_search
|
27
38
|
resp = Amazon::Ecs.item_search('ruby')
|
28
|
-
assert resp.is_valid_request?,
|
29
|
-
|
30
|
-
assert (resp.
|
31
|
-
"Results returned (#{resp.total_results}) were < 3600"
|
32
|
-
assert (resp.total_pages >= 360),
|
33
|
-
"Pages returned (#{resp.total_pages}) were < 360"
|
39
|
+
assert resp.is_valid_request?, "Not a valid request"
|
40
|
+
assert (resp.total_results >= 3600), "Results returned (#{resp.total_results}) were < 3600"
|
41
|
+
assert (resp.total_pages >= 360), "Pages returned (#{resp.total_pages}) were < 360"
|
34
42
|
end
|
35
43
|
|
36
44
|
def test_item_search_with_special_characters
|
37
45
|
resp = Amazon::Ecs.item_search('()*&^%$')
|
38
|
-
assert resp.is_valid_request?,
|
39
|
-
"Not a valid request"
|
46
|
+
assert resp.is_valid_request?, "Not a valid request"
|
40
47
|
end
|
41
48
|
|
42
49
|
def test_item_search_with_paging
|
43
50
|
resp = Amazon::Ecs.item_search('ruby', :item_page => 2)
|
44
|
-
assert resp.is_valid_request?,
|
45
|
-
|
46
|
-
assert_equal 2, resp.item_page,
|
47
|
-
"Page returned (#{resp.item_page}) different from expected (2)"
|
51
|
+
assert resp.is_valid_request?, "Not a valid request"
|
52
|
+
assert_equal 2, resp.item_page, "Page returned (#{resp.item_page}) different from expected (2)"
|
48
53
|
end
|
49
54
|
|
50
55
|
def test_item_search_with_invalid_request
|
51
56
|
resp = Amazon::Ecs.item_search(nil)
|
52
|
-
assert !resp.is_valid_request?,
|
53
|
-
"Expected invalid request error"
|
57
|
+
assert !resp.is_valid_request?, "Expected invalid request error"
|
54
58
|
end
|
55
59
|
|
56
60
|
def test_item_search_with_no_result
|
57
61
|
resp = Amazon::Ecs.item_search('afdsafds')
|
58
|
-
assert resp.is_valid_request?,
|
59
|
-
"Not a valid request"
|
62
|
+
assert resp.is_valid_request?, "Not a valid request"
|
60
63
|
assert_equal "We did not find any matches for your request.", resp.error,
|
61
64
|
"Error string different from expected"
|
62
65
|
end
|
63
66
|
|
64
67
|
def test_utf8_encoding
|
65
68
|
resp = Amazon::Ecs.item_search('ruby', :country => :uk)
|
66
|
-
assert resp.is_valid_request?,
|
67
|
-
"Not a valid request"
|
69
|
+
assert resp.is_valid_request?, "Not a valid request"
|
68
70
|
item = resp.first_item
|
69
71
|
assert_no_match(/\A&#x.*/, item.get_unescaped("//FormattedPrice"),
|
70
72
|
"£ sign converted to ASCII from UTF-8")
|
@@ -72,8 +74,7 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
72
74
|
|
73
75
|
def test_item_search_by_author
|
74
76
|
resp = Amazon::Ecs.item_search('dave', :type => :author)
|
75
|
-
assert resp.is_valid_request?,
|
76
|
-
"Not a valid request"
|
77
|
+
assert resp.is_valid_request?, "Not a valid request"
|
77
78
|
end
|
78
79
|
|
79
80
|
def test_item_get
|
@@ -82,13 +83,11 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
82
83
|
|
83
84
|
# test get
|
84
85
|
assert_equal "Programming Ruby: The Pragmatic Programmers' Guide, Second Edition",
|
85
|
-
item.get("ItemAttributes/Title"),
|
86
|
-
"Title different from expected"
|
86
|
+
item.get("ItemAttributes/Title"), "Title different from expected"
|
87
87
|
|
88
88
|
# test get_array
|
89
89
|
assert_equal ['Dave Thomas', 'Chad Fowler', 'Andy Hunt'],
|
90
|
-
item.get_array("Author"),
|
91
|
-
"Authors Array different from expected"
|
90
|
+
item.get_array("Author"), "Authors Array different from expected"
|
92
91
|
|
93
92
|
# test get_hash
|
94
93
|
small_image = item.get_hash("SmallImage")
|
@@ -117,22 +116,18 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
117
116
|
def test_item_lookup
|
118
117
|
resp = Amazon::Ecs.item_lookup('0974514055')
|
119
118
|
assert_equal "Programming Ruby: The Pragmatic Programmers' Guide, Second Edition",
|
120
|
-
resp.first_item.get("ItemAttributes/Title"),
|
121
|
-
"Title different from expected"
|
119
|
+
resp.first_item.get("ItemAttributes/Title"), "Title different from expected"
|
122
120
|
end
|
123
121
|
|
124
122
|
def test_item_lookup_with_invalid_request
|
125
123
|
resp = Amazon::Ecs.item_lookup(nil)
|
126
|
-
assert resp.has_error?,
|
127
|
-
|
128
|
-
assert resp.error,
|
129
|
-
"Response should have contained an error"
|
124
|
+
assert resp.has_error?, "Response should have been invalid"
|
125
|
+
assert resp.error, "Response should have contained an error"
|
130
126
|
end
|
131
127
|
|
132
128
|
def test_item_lookup_with_no_result
|
133
129
|
resp = Amazon::Ecs.item_lookup('abc')
|
134
|
-
assert resp.is_valid_request?,
|
135
|
-
"Not a valid request"
|
130
|
+
assert resp.is_valid_request?, "Not a valid request"
|
136
131
|
assert_match(/ABC is not a valid value for ItemId/, resp.error,
|
137
132
|
"Error Message for lookup of ASIN = ABC different from expected")
|
138
133
|
end
|
@@ -142,20 +137,16 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
142
137
|
item = resp.first_item
|
143
138
|
|
144
139
|
authors = item.get_elements("Author")
|
145
|
-
assert_instance_of Array, authors,
|
146
|
-
|
147
|
-
assert_equal 3, authors.size,
|
148
|
-
"Author array size (#{authors.size}) different from expected (3)"
|
140
|
+
assert_instance_of Array, authors, "Authors should be an Array"
|
141
|
+
assert_equal 3, authors.size, "Author array size (#{authors.size}) different from expected (3)"
|
149
142
|
assert_instance_of Amazon::Element, authors.first,
|
150
143
|
"Authors array first element (#{authors.first.class}) should be an Amazon::Element"
|
151
144
|
assert_equal "Dave Thomas", authors.first.get,
|
152
145
|
"First Author (#{authors.first.get}) different from expected (Dave Thomas)"
|
153
146
|
|
154
147
|
asin = item.get_elements("./ASIN")
|
155
|
-
assert_instance_of Array, asin,
|
156
|
-
|
157
|
-
assert_equal 1, asin.size,
|
158
|
-
"ASIN array size (#{asin.size}) different from expected (1)"
|
148
|
+
assert_instance_of Array, asin, "ASIN should be an Array"
|
149
|
+
assert_equal 1, asin.size, "ASIN array size (#{asin.size}) different from expected (1)"
|
159
150
|
end
|
160
151
|
|
161
152
|
def test_get_element_and_attributes
|
@@ -176,8 +167,7 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
176
167
|
|
177
168
|
def test_multibyte_search
|
178
169
|
resp = Amazon::Ecs.item_search("パソコン")
|
179
|
-
assert resp.is_valid_request?,
|
180
|
-
"Not a valid request"
|
170
|
+
assert resp.is_valid_request?, "Not a valid request"
|
181
171
|
end
|
182
172
|
|
183
173
|
def test_marshal_dump_and_load
|
@@ -192,11 +182,11 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
192
182
|
end
|
193
183
|
|
194
184
|
def test_browse_node_lookup
|
195
|
-
resp = Amazon::Ecs.browse_node_lookup(
|
185
|
+
resp = Amazon::Ecs.browse_node_lookup('17')
|
196
186
|
assert resp.is_valid_request?, "Not a valid request"
|
197
187
|
|
198
188
|
items = resp.get_elements("BrowseNode")
|
199
|
-
|
189
|
+
assert items.size.between?(15, 25)
|
200
190
|
end
|
201
191
|
|
202
192
|
def test_similarity_lookup
|
@@ -204,19 +194,25 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
204
194
|
assert resp.is_valid_request?, "Not a valid request"
|
205
195
|
|
206
196
|
items = resp.get_elements("Item")
|
207
|
-
|
197
|
+
assert items.size.between?(5, 15)
|
208
198
|
end
|
209
199
|
|
210
200
|
def test_other_service_urls
|
201
|
+
test_regions = ENV['AWS_REGIONS']&.split&.collect(&:to_sym) || Amazon::Ecs::SERVICE_URLS.keys
|
202
|
+
|
211
203
|
Amazon::Ecs::SERVICE_URLS.each do |key, value|
|
212
|
-
next
|
204
|
+
next unless test_regions.include?(key)
|
213
205
|
|
214
206
|
begin
|
207
|
+
throttle_request
|
215
208
|
resp = Amazon::Ecs.item_search('ruby', :country => key)
|
216
209
|
assert resp, "#{key} service url (#{value}) is invalid"
|
217
210
|
rescue => e
|
218
|
-
|
219
|
-
|
211
|
+
if e.message.match(/503 Service Unavailable/)
|
212
|
+
puts "Unable to test '#{key}' service url (#{value}) is unavailable: #{e}"
|
213
|
+
else
|
214
|
+
assert false, "'#{key}' service url (#{value}) is invalid. Error: #{e}"
|
215
|
+
end
|
220
216
|
end
|
221
217
|
end
|
222
218
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amazon-ecs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Herryanto Siatono
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -16,28 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.10'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: ruby-hmac
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.3'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.3'
|
26
|
+
version: '1.10'
|
41
27
|
description: Generic Amazon Product Advertising Ruby API.
|
42
28
|
email: herryanto@gmail.com
|
43
29
|
executables: []
|
@@ -45,6 +31,7 @@ extensions: []
|
|
45
31
|
extra_rdoc_files: []
|
46
32
|
files:
|
47
33
|
- ".gitignore"
|
34
|
+
- ".travis.yml"
|
48
35
|
- CHANGELOG
|
49
36
|
- Gemfile
|
50
37
|
- MIT-LICENSE
|
@@ -65,17 +52,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
65
52
|
requirements:
|
66
53
|
- - ">="
|
67
54
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
55
|
+
version: '2.3'
|
69
56
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
57
|
requirements:
|
71
58
|
- - ">="
|
72
59
|
- !ruby/object:Gem::Version
|
73
60
|
version: '0'
|
74
61
|
requirements: []
|
75
|
-
|
76
|
-
rubygems_version: 2.4.6
|
62
|
+
rubygems_version: 3.0.1
|
77
63
|
signing_key:
|
78
|
-
specification_version:
|
64
|
+
specification_version: 4
|
79
65
|
summary: Generic Amazon Product Advertising Ruby API.
|
80
66
|
test_files:
|
81
67
|
- test/amazon/ecs_test.rb
|