asin 0.5.1 → 0.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.
- data/.travis.yml +11 -0
- data/Gemfile.lock +16 -9
- data/README.rdoc +32 -10
- data/asin.gemspec +13 -8
- data/cassettes/add_items1430216263.yml +204 -0
- data/cassettes/bad_configuration.yml +29 -0
- data/cassettes/browse_node_599826.yml +112 -0
- data/cassettes/clear_cart.yml +196 -0
- data/cassettes/create_cart_with_asin_1430218150_and_other_asin_1430216263.yml +36 -0
- data/cassettes/get_cart.yml +199 -0
- data/cassettes/lookup_1430218150-0439023521_multiple.yml +26 -0
- data/cassettes/lookup_1430218150.yml +184 -0
- data/cassettes/lookup_1430218150_item_class.yml +184 -0
- data/cassettes/lookup_1430218150_mash.yml +184 -0
- data/cassettes/lookup_1430218150_medium.yml +184 -0
- data/cassettes/lookup_1430218150_rash.yml +184 -0
- data/cassettes/lookup_1430218150_raw.yml +184 -0
- data/cassettes/lookup_multiple_asins.yml +112 -0
- data/cassettes/search_index_music.yml +92 -0
- data/cassettes/search_keywords.yml +1513 -0
- data/cassettes/search_keywords_index_music.yml +116 -0
- data/cassettes/search_keywords_key_index_music.yml +231 -0
- data/cassettes/search_keywords_single_result.yml +72 -0
- data/cassettes/update_items.yml +208 -0
- data/lib/asin/client.rb +12 -11
- data/lib/asin/configuration.rb +27 -19
- data/lib/asin/version.rb +1 -1
- data/spec/browse_node_spec.rb +7 -5
- data/spec/cart_spec.rb +31 -22
- data/spec/search_spec.rb +72 -40
- data/spec/spec_helper.rb +16 -2
- metadata +84 -19
data/lib/asin/client.rb
CHANGED
@@ -30,7 +30,7 @@ require 'base64'
|
|
30
30
|
# Amazon Standard Identification Number (ASIN):
|
31
31
|
#
|
32
32
|
# item = lookup '1430218150'
|
33
|
-
# item.title
|
33
|
+
# item.first.title
|
34
34
|
# => "Learn Objective-C on the Mac (Learn Series)"
|
35
35
|
#
|
36
36
|
# OR search with fulltext/ASIN/ISBN
|
@@ -128,11 +128,16 @@ module ASIN
|
|
128
128
|
|
129
129
|
# Performs an +ItemLookup+ REST call against the Amazon API.
|
130
130
|
#
|
131
|
-
# Expects an ASIN (Amazon Standard Identification Number) and returns an +SimpleItem+:
|
131
|
+
# Expects an arbitrary number of ASIN (Amazon Standard Identification Number) and returns an array of +SimpleItem+:
|
132
132
|
#
|
133
133
|
# item = lookup '1430218150'
|
134
134
|
# item.title
|
135
135
|
# => "Learn Objective-C on the Mac (Learn Series)"
|
136
|
+
# items = lookup ['1430218150', '0439023521']
|
137
|
+
# items[0].title
|
138
|
+
# => "Learn Objective-C on the Mac (Learn Series)"
|
139
|
+
# items[1].title
|
140
|
+
# => "The Hunger Games"
|
136
141
|
#
|
137
142
|
# ==== Options:
|
138
143
|
#
|
@@ -140,9 +145,10 @@ module ASIN
|
|
140
145
|
#
|
141
146
|
# lookup(asin, :ResponseGroup => :Medium)
|
142
147
|
#
|
143
|
-
def lookup(
|
144
|
-
|
145
|
-
|
148
|
+
def lookup(*asins)
|
149
|
+
params = asins.last.is_a?(Hash) ? asins.pop : {:ResponseGroup => :Medium}
|
150
|
+
response = call(params.merge(:Operation => :ItemLookup, :ItemId => asins.join(',')))
|
151
|
+
arrayfy(response['ItemLookupResponse']['Items']['Item']).map {|item| handle_item(item)}
|
146
152
|
end
|
147
153
|
|
148
154
|
# Performs an +ItemSearch+ REST call against the Amazon API.
|
@@ -328,13 +334,8 @@ module ASIN
|
|
328
334
|
handle_type(cart, Configuration.cart_type)
|
329
335
|
end
|
330
336
|
|
331
|
-
|
332
|
-
def credentials_valid?
|
333
|
-
Configuration.secret && Configuration.key
|
334
|
-
end
|
335
|
-
|
336
337
|
def call(params)
|
337
|
-
|
338
|
+
Configuration.validate_credentials!
|
338
339
|
|
339
340
|
log(:debug, "calling with params=#{params}")
|
340
341
|
signed = create_signed_query_string(params)
|
data/lib/asin/configuration.rb
CHANGED
@@ -15,9 +15,11 @@ module ASIN
|
|
15
15
|
#
|
16
16
|
# ASIN::Configuration.configure do |config|
|
17
17
|
# config.secret = 'your-secret'
|
18
|
-
# config.key
|
18
|
+
# config.key = 'your-key'
|
19
19
|
# end
|
20
20
|
#
|
21
|
+
# With the latest version of the Product Advertising API you need to include your associate_tag[https://affiliate-program.amazon.com/gp/advertising/api/detail/api-changes.html].
|
22
|
+
#
|
21
23
|
# You may pass options as a hash as well:
|
22
24
|
#
|
23
25
|
# ASIN::Configuration.configure :secret => 'your-secret', :key => 'your-key'
|
@@ -32,15 +34,15 @@ module ASIN
|
|
32
34
|
#
|
33
35
|
# ==== Options:
|
34
36
|
#
|
35
|
-
# [secret] the API secret key
|
36
|
-
# [key] the API access key
|
37
|
+
# [secret] the API secret key (required)
|
38
|
+
# [key] the API access key (required)
|
39
|
+
# [associate_tag] your Amazon associate tag. Default is blank (required in latest API version)
|
37
40
|
# [host] the host, which defaults to 'webservices.amazon.com'
|
38
41
|
# [logger] a different logger than logging to STDERR (nil for no logging)
|
42
|
+
# [version] a custom version of the API calls. Default is 2010-11-01
|
39
43
|
# [item_type] a different class for SimpleItem, use :mash / :rash for Hashie::Mash / Hashie::Rash or :raw for a plain hash
|
40
44
|
# [cart_type] a different class for SimpleCart, use :mash / :rash for Hashie::Mash / Hashie::Rash or :raw for a plain hash
|
41
45
|
# [node_type] a different class for SimpleNode, use :mash / :rash for Hashie::Mash / Hashie::Rash or :raw for a plain hash
|
42
|
-
# [version] a custom version of the API calls. Default is 2010-11-01
|
43
|
-
# [associate_tag] your Amazon associate tag. Default is blank.
|
44
46
|
#
|
45
47
|
def configure(options={})
|
46
48
|
init_config
|
@@ -63,27 +65,33 @@ module ASIN
|
|
63
65
|
self
|
64
66
|
end
|
65
67
|
|
68
|
+
# Checks if given credentials are valid and raises an error if not.
|
69
|
+
#
|
70
|
+
def validate_credentials!
|
71
|
+
raise "you have to configure ASIN: 'configure :secret => 'your-secret', :key => 'your-key''" unless @secret && @key
|
72
|
+
end
|
73
|
+
|
66
74
|
# Resets configuration to defaults
|
67
75
|
#
|
68
76
|
def reset
|
69
77
|
init_config(true)
|
70
78
|
end
|
71
79
|
|
72
|
-
private
|
80
|
+
private()
|
73
81
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
82
|
+
def init_config(force=false)
|
83
|
+
return if @init && !force
|
84
|
+
@init = true
|
85
|
+
@secret = ''
|
86
|
+
@key = ''
|
87
|
+
@host = 'webservices.amazon.com'
|
88
|
+
@logger = Logger.new(STDERR)
|
89
|
+
@item_type = SimpleItem
|
90
|
+
@cart_type = SimpleCart
|
91
|
+
@node_type = SimpleNode
|
92
|
+
@version = '2010-11-01'
|
93
|
+
@associate_tag = ''
|
94
|
+
end
|
87
95
|
end
|
88
96
|
end
|
89
97
|
end
|
data/lib/asin/version.rb
CHANGED
data/spec/browse_node_spec.rb
CHANGED
@@ -12,15 +12,17 @@ module ASIN
|
|
12
12
|
puts "configure #{@secret} and #{@key} for this test"
|
13
13
|
end
|
14
14
|
|
15
|
-
context "
|
15
|
+
context "browse_node" do
|
16
16
|
before do
|
17
17
|
@helper.configure :secret => @secret, :key => @key
|
18
18
|
end
|
19
19
|
|
20
|
-
it "should lookup a
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
it "should lookup a browse_node" do
|
21
|
+
VCR.use_cassette("browse_node_#{ANY_BROWSE_NODE_ID}", :match_requests_on => [:host, :path]) do
|
22
|
+
item = @helper.browse_node(ANY_BROWSE_NODE_ID)
|
23
|
+
item.node_id.should eql(ANY_BROWSE_NODE_ID)
|
24
|
+
item.name.should eql('Comedy')
|
25
|
+
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
data/spec/cart_spec.rb
CHANGED
@@ -16,9 +16,11 @@ module ASIN
|
|
16
16
|
context "cart" do
|
17
17
|
|
18
18
|
it "should create a cart" do
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
VCR.use_cassette("create_cart_with_asin_#{ANY_ASIN}_and_other_asin_#{ANY_OTHER_ASIN}", :match_requests_on => [:host, :path]) do
|
20
|
+
cart = @helper.create_cart({:asin => ANY_ASIN, :quantity => 1}, {:asin => ANY_OTHER_ASIN, :quantity => 2})
|
21
|
+
cart.valid?.should be(true)
|
22
|
+
cart.empty?.should be(false)
|
23
|
+
end
|
22
24
|
end
|
23
25
|
|
24
26
|
it "should handle item paramters" do
|
@@ -28,35 +30,42 @@ module ASIN
|
|
28
30
|
|
29
31
|
context "with an existing cart" do
|
30
32
|
|
31
|
-
before do
|
32
|
-
@cart = @helper.create_cart({:asin => ANY_ASIN, :quantity => 1})
|
33
|
-
@cart.valid?.should be(true)
|
34
|
-
end
|
35
|
-
|
36
33
|
it "should clear a cart" do
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
VCR.use_cassette("clear_cart", :match_requests_on => [:host, :path]) do
|
35
|
+
@cart = @helper.create_cart({:asin => ANY_ASIN, :quantity => 1})
|
36
|
+
cart = @helper.clear_cart(@cart)
|
37
|
+
cart.valid?.should be(true)
|
38
|
+
cart.empty?.should be(true)
|
39
|
+
end
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should get a cart" do
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
VCR.use_cassette("get_cart", :match_requests_on => [:host, :path]) do
|
44
|
+
@cart = @helper.create_cart({:asin => ANY_ASIN, :quantity => 1})
|
45
|
+
cart = @helper.get_cart(@cart.cart_id, @cart.hmac)
|
46
|
+
cart.valid?.should be(true)
|
47
|
+
cart.empty?.should be(false)
|
48
|
+
end
|
46
49
|
end
|
47
50
|
|
48
51
|
it "should add items to a cart" do
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
VCR.use_cassette("add_items#{ANY_OTHER_ASIN}", :match_requests_on => [:host, :path]) do
|
53
|
+
@cart = @helper.create_cart({:asin => ANY_ASIN, :quantity => 1})
|
54
|
+
cart = @helper.add_items(@cart, {:asin => ANY_OTHER_ASIN, :quantity => 2})
|
55
|
+
cart.valid?.should be(true)
|
56
|
+
cart.empty?.should be(false)
|
57
|
+
cart.items.should have(2).things
|
58
|
+
end
|
53
59
|
end
|
54
60
|
|
55
61
|
it "should update a cart" do
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
62
|
+
VCR.use_cassette("update_items", :match_requests_on => [:host, :path]) do
|
63
|
+
@cart = @helper.create_cart({:asin => ANY_ASIN, :quantity => 1})
|
64
|
+
item_id = @cart.items.first.CartItemId
|
65
|
+
cart = @helper.update_items(@cart, {:cart_item_id => item_id, :action => 'SaveForLater'}, {:cart_item_id => item_id, :quantity => 7})
|
66
|
+
cart.saved_items.should have(1).things
|
67
|
+
cart.valid?.should be(true)
|
68
|
+
end
|
60
69
|
end
|
61
70
|
|
62
71
|
end
|
data/spec/search_spec.rb
CHANGED
@@ -14,7 +14,9 @@ module ASIN
|
|
14
14
|
|
15
15
|
context "configuration" do
|
16
16
|
it "should fail without secret and key" do
|
17
|
-
|
17
|
+
VCR.use_cassette("bad_configuration", :match_requests_on => [:host, :path]) do
|
18
|
+
lambda { @helper.lookup 'bla' }.should raise_error(RuntimeError)
|
19
|
+
end
|
18
20
|
end
|
19
21
|
|
20
22
|
it "should fail with wrong configuration key" do
|
@@ -61,77 +63,107 @@ module ASIN
|
|
61
63
|
end
|
62
64
|
|
63
65
|
it "should lookup a book" do
|
64
|
-
|
65
|
-
|
66
|
+
VCR.use_cassette("lookup_#{ANY_ASIN}", :match_requests_on => [:host, :path]) do
|
67
|
+
items = @helper.lookup(ANY_ASIN)
|
68
|
+
items.first.title.should =~ /Learn Objective/
|
69
|
+
end
|
66
70
|
end
|
67
71
|
|
68
72
|
it "should have metadata" do
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
VCR.use_cassette("lookup_#{ANY_ASIN}_medium", :match_requests_on => [:host, :path]) do
|
74
|
+
items = @helper.lookup(ANY_ASIN, :ResponseGroup => :Medium)
|
75
|
+
item = items.first
|
76
|
+
item.asin.should eql(ANY_ASIN)
|
77
|
+
item.title.should =~ /Learn Objective/
|
78
|
+
item.amount.should eql(3999)
|
79
|
+
item.details_url.should eql('http://www.amazon.com/Learn-Objective-C-Mac-Mark-Dalrymple/dp/1430218150%3FSubscriptionId%3DAKIAJFA5X7RTOKFNPVZQ%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1430218150')
|
80
|
+
item.image_url.should eql('http://ecx.images-amazon.com/images/I/41kq5bDvnUL.jpg')
|
81
|
+
item.review.should =~ /Learn Objective-C on the Macintosh/
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should lookup multiple books" do
|
86
|
+
VCR.use_cassette("lookup_multiple_asins", :match_requests_on => [:host, :path]) do
|
87
|
+
items = @helper.lookup(ANY_ASIN, ANY_OTHER_ASIN)
|
88
|
+
|
89
|
+
items.first.title.should =~ /Learn Objective/
|
90
|
+
items.last.title.should =~ /Beginning iPhone Development/
|
91
|
+
end
|
76
92
|
end
|
77
93
|
|
78
94
|
it "should return a custom item class" do
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
95
|
+
VCR.use_cassette("lookup_#{ANY_ASIN}_item_class", :match_requests_on => [:host, :path]) do
|
96
|
+
module TEST
|
97
|
+
class TestItem
|
98
|
+
attr_accessor :testo
|
99
|
+
def initialize(hash)
|
100
|
+
@testo = hash
|
101
|
+
end
|
84
102
|
end
|
85
103
|
end
|
104
|
+
@helper.configure :item_type => TEST::TestItem
|
105
|
+
@helper.lookup(ANY_ASIN).first.testo.should_not be_nil
|
86
106
|
end
|
87
|
-
@helper.configure :item_type => TEST::TestItem
|
88
|
-
@helper.lookup(ANY_ASIN).testo.should_not be_nil
|
89
107
|
end
|
90
108
|
|
91
109
|
it "should return a raw value" do
|
92
|
-
|
93
|
-
|
110
|
+
VCR.use_cassette("lookup_#{ANY_ASIN}_raw", :match_requests_on => [:host, :path]) do
|
111
|
+
@helper.configure :item_type => :raw
|
112
|
+
@helper.lookup(ANY_ASIN).first['ItemAttributes']['Title'].should_not be_nil
|
113
|
+
end
|
94
114
|
end
|
95
115
|
|
96
116
|
it "should return a mash value" do
|
97
|
-
|
98
|
-
|
117
|
+
VCR.use_cassette("lookup_#{ANY_ASIN}_mash", :match_requests_on => [:host, :path]) do
|
118
|
+
@helper.configure :item_type => :mash
|
119
|
+
@helper.lookup(ANY_ASIN).first.ItemAttributes.Title.should_not be_nil
|
120
|
+
end
|
99
121
|
end
|
100
122
|
|
101
123
|
it "should return a rash value" do
|
102
|
-
|
103
|
-
|
124
|
+
VCR.use_cassette("lookup_#{ANY_ASIN}_rash", :match_requests_on => [:host, :path]) do
|
125
|
+
@helper.configure :item_type => :rash
|
126
|
+
@helper.lookup(ANY_ASIN).first.item_attributes.title.should_not be_nil
|
127
|
+
end
|
104
128
|
end
|
105
|
-
|
129
|
+
|
106
130
|
it "should search_keywords and handle a single result" do
|
107
|
-
|
108
|
-
|
131
|
+
VCR.use_cassette("search_keywords_single_result", :match_requests_on => [:host, :path]) do
|
132
|
+
items = @helper.search_keywords('0471317519')
|
133
|
+
items.first.title.should =~ /A Self-Teaching Guide/
|
134
|
+
end
|
109
135
|
end
|
110
136
|
|
111
|
-
it "should search_keywords book with fulltext" do
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
137
|
+
it "should search_keywords a book with fulltext" do
|
138
|
+
VCR.use_cassette("search_keywords", :match_requests_on => [:host, :path]) do
|
139
|
+
items = @helper.search_keywords 'Learn', 'Objective-C'
|
140
|
+
items.should have(10).things
|
141
|
+
items.first.title.should =~ /Learn Objective/
|
142
|
+
end
|
116
143
|
end
|
117
144
|
|
118
145
|
it "should search_keywords never mind music" do
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
146
|
+
VCR.use_cassette("search_keywords_index_music", :match_requests_on => [:host, :path]) do
|
147
|
+
items = @helper.search_keywords 'nirvana', 'never mind', :SearchIndex => :Music
|
148
|
+
items.should have(10).things
|
149
|
+
items.first.title.should =~ /Nevermind/
|
150
|
+
end
|
123
151
|
end
|
124
152
|
|
125
153
|
it "should search music" do
|
126
|
-
|
127
|
-
|
154
|
+
VCR.use_cassette("search_index_music", :match_requests_on => [:host, :path]) do
|
155
|
+
items = @helper.search :SearchIndex => :Music
|
156
|
+
items.should have(0).things
|
157
|
+
end
|
128
158
|
end
|
129
159
|
|
130
160
|
it "should search never mind music" do
|
131
|
-
|
132
|
-
|
161
|
+
VCR.use_cassette("search_keywords_key_index_music", :match_requests_on => [:host, :path]) do
|
162
|
+
items = @helper.search :Keywords => 'nirvana', :SearchIndex => :Music
|
163
|
+
items.should have(10).things
|
133
164
|
|
134
|
-
|
165
|
+
items.first.title.should =~ /Nevermind/
|
166
|
+
end
|
135
167
|
end
|
136
168
|
end
|
137
169
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,26 @@
|
|
1
1
|
$:.unshift File.join(File.dirname(__FILE__),'..','..','lib')
|
2
|
+
|
2
3
|
require 'rspec'
|
3
4
|
require 'asin'
|
4
5
|
require 'pp'
|
6
|
+
require 'httpclient'
|
7
|
+
require 'vcr'
|
8
|
+
|
9
|
+
VCR.config do |c|
|
10
|
+
c.cassette_library_dir = 'cassettes'
|
11
|
+
c.stub_with :webmock
|
12
|
+
# c.default_cassette_options = { :record => :new_episodes }
|
13
|
+
end
|
5
14
|
|
6
15
|
ANY_ASIN = '1430218150'
|
7
16
|
ANY_OTHER_ASIN = '1430216263'
|
8
17
|
ANY_BROWSE_NODE_ID = '599826'
|
9
18
|
|
10
|
-
RSpec.configure do |
|
11
|
-
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.mock_with :rspec
|
21
|
+
config.extend VCR::RSpec::Macros
|
12
22
|
end
|
23
|
+
|
24
|
+
# setup for travis-ci
|
25
|
+
ENV['ASIN_SECRET'] ||= 'any_secret'
|
26
|
+
ENV['ASIN_KEY'] ||= 'any_key'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-16 00:00:00.000000000 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: crack
|
17
|
-
requirement: &
|
17
|
+
requirement: &2153806140 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 0.1.8
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2153806140
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: hashie
|
28
|
-
requirement: &
|
28
|
+
requirement: &2153805640 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,32 +33,32 @@ dependencies:
|
|
33
33
|
version: 1.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2153805640
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: httpi
|
39
|
-
requirement: &
|
39
|
+
requirement: &2153805180 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: 0.9.
|
44
|
+
version: 0.9.5
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2153805180
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: httpclient
|
50
|
-
requirement: &
|
50
|
+
requirement: &2153804720 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 2.2.
|
55
|
+
version: 2.2.1
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2153804720
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rash
|
61
|
-
requirement: &
|
61
|
+
requirement: &2153804260 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,54 @@ dependencies:
|
|
66
66
|
version: 0.3.0
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2153804260
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
requirement: &2153803800 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.9.2
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *2153803800
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: httpclient
|
83
|
+
requirement: &2153803340 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 2.2.1
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: *2153803340
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: vcr
|
94
|
+
requirement: &2153802880 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.10.3
|
100
|
+
type: :development
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: *2153802880
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: webmock
|
105
|
+
requirement: &2153802420 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.6.4
|
111
|
+
type: :development
|
112
|
+
prerelease: false
|
113
|
+
version_requirements: *2153802420
|
70
114
|
- !ruby/object:Gem::Dependency
|
71
115
|
name: rspec
|
72
|
-
requirement: &
|
116
|
+
requirement: &2153801960 !ruby/object:Gem::Requirement
|
73
117
|
none: false
|
74
118
|
requirements:
|
75
119
|
- - ~>
|
@@ -77,18 +121,18 @@ dependencies:
|
|
77
121
|
version: 2.6.0
|
78
122
|
type: :development
|
79
123
|
prerelease: false
|
80
|
-
version_requirements: *
|
124
|
+
version_requirements: *2153801960
|
81
125
|
- !ruby/object:Gem::Dependency
|
82
126
|
name: fuubar
|
83
|
-
requirement: &
|
127
|
+
requirement: &2153801500 !ruby/object:Gem::Requirement
|
84
128
|
none: false
|
85
129
|
requirements:
|
86
130
|
- - ~>
|
87
131
|
- !ruby/object:Gem::Version
|
88
|
-
version: 0.0.
|
132
|
+
version: 0.0.5
|
89
133
|
type: :development
|
90
134
|
prerelease: false
|
91
|
-
version_requirements: *
|
135
|
+
version_requirements: *2153801500
|
92
136
|
description: Amazon Simple INterface.
|
93
137
|
email:
|
94
138
|
- phoetmail@googlemail.com
|
@@ -99,11 +143,32 @@ files:
|
|
99
143
|
- .document
|
100
144
|
- .gitignore
|
101
145
|
- .rvmrc
|
146
|
+
- .travis.yml
|
102
147
|
- CHANGELOG.rdoc
|
103
148
|
- Gemfile
|
104
149
|
- Gemfile.lock
|
105
150
|
- README.rdoc
|
106
151
|
- asin.gemspec
|
152
|
+
- cassettes/add_items1430216263.yml
|
153
|
+
- cassettes/bad_configuration.yml
|
154
|
+
- cassettes/browse_node_599826.yml
|
155
|
+
- cassettes/clear_cart.yml
|
156
|
+
- cassettes/create_cart_with_asin_1430218150_and_other_asin_1430216263.yml
|
157
|
+
- cassettes/get_cart.yml
|
158
|
+
- cassettes/lookup_1430218150-0439023521_multiple.yml
|
159
|
+
- cassettes/lookup_1430218150.yml
|
160
|
+
- cassettes/lookup_1430218150_item_class.yml
|
161
|
+
- cassettes/lookup_1430218150_mash.yml
|
162
|
+
- cassettes/lookup_1430218150_medium.yml
|
163
|
+
- cassettes/lookup_1430218150_rash.yml
|
164
|
+
- cassettes/lookup_1430218150_raw.yml
|
165
|
+
- cassettes/lookup_multiple_asins.yml
|
166
|
+
- cassettes/search_index_music.yml
|
167
|
+
- cassettes/search_keywords.yml
|
168
|
+
- cassettes/search_keywords_index_music.yml
|
169
|
+
- cassettes/search_keywords_key_index_music.yml
|
170
|
+
- cassettes/search_keywords_single_result.yml
|
171
|
+
- cassettes/update_items.yml
|
107
172
|
- lib/asin.rb
|
108
173
|
- lib/asin/client.rb
|
109
174
|
- lib/asin/configuration.rb
|