vacuum 0.0.1 → 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/README.md +31 -49
- data/lib/vacuum/em.rb +23 -0
- data/lib/vacuum/{builder.rb → hash_builder.rb} +6 -12
- data/lib/vacuum/request.rb +79 -91
- data/lib/vacuum/response.rb +24 -46
- data/lib/vacuum/version.rb +1 -1
- data/lib/vacuum.rb +13 -12
- data/spec/vacuum/{builder_spec.rb → hash_builder_spec.rb} +5 -5
- data/spec/vacuum/request_spec.rb +54 -107
- data/spec/vacuum/response_spec.rb +30 -46
- metadata +11 -24
- data/lib/vacuum/cart.rb +0 -90
- data/lib/vacuum/cart_operations.rb +0 -12
- data/lib/vacuum/error.rb +0 -13
- data/lib/vacuum/locale.rb +0 -39
- data/lib/vacuum/lookup_operations.rb +0 -62
- data/lib/vacuum/search_operations.rb +0 -43
- data/spec/vacuum/cart_operations_spec.rb +0 -0
- data/spec/vacuum/cart_spec.rb +0 -0
- data/spec/vacuum/lookup_operations_spec.rb +0 -53
- data/spec/vacuum/search_operations_spec.rb +0 -59
data/spec/vacuum/request_spec.rb
CHANGED
@@ -2,102 +2,81 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Vacuum
|
4
4
|
describe Request do
|
5
|
-
let(:req)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
c.tag = 'bar'
|
12
|
-
end
|
5
|
+
let(:req) do
|
6
|
+
Request.new :locale => :us,
|
7
|
+
:key => 'foo',
|
8
|
+
:secret => 'bar',
|
9
|
+
:tag => 'baz'
|
10
|
+
end
|
13
11
|
|
14
|
-
|
12
|
+
describe ".new" do
|
13
|
+
it 'raises an error if key is missing' do
|
14
|
+
expect do
|
15
|
+
Request.new :secret => 'foo',
|
16
|
+
:tag => 'bar'
|
17
|
+
end.to raise_error MissingKey
|
15
18
|
end
|
16
19
|
|
17
|
-
it '
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
it 'raises an error if secret is missing' do
|
21
|
+
expect do
|
22
|
+
Request.new :key => 'foo',
|
23
|
+
:tag => 'bar'
|
24
|
+
end.to raise_error MissingSecret
|
21
25
|
end
|
22
26
|
|
23
|
-
it '
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
it 'raises an error if tag is missing' do
|
28
|
+
expect do
|
29
|
+
Request.new :key => 'foo',
|
30
|
+
:secret => 'bar'
|
31
|
+
end.to raise_error MissingTag
|
27
32
|
end
|
28
33
|
|
29
|
-
it '
|
30
|
-
|
31
|
-
|
32
|
-
|
34
|
+
it 'raises an error if locale is not valid' do
|
35
|
+
expect do
|
36
|
+
Request.new :key => 'foo',
|
37
|
+
:secret => 'bar',
|
38
|
+
:tag => 'baz',
|
39
|
+
:locale => 'bad'
|
40
|
+
end.to raise_error BadLocale
|
33
41
|
end
|
42
|
+
end
|
34
43
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
req.params['Key'].should eql '
|
44
|
+
describe '#build' do
|
45
|
+
it 'merges parameters into the query' do
|
46
|
+
req.build 'Key' => 'value'
|
47
|
+
req.params['Key'].should eql 'value'
|
39
48
|
end
|
40
49
|
|
41
|
-
it '
|
42
|
-
req
|
50
|
+
it 'casts values to string' do
|
51
|
+
req.build 'Key' => 1
|
52
|
+
req.params['Key'].should eql '1'
|
43
53
|
|
54
|
+
req.build 'Key' => ['foo', 'bar']
|
44
55
|
req.params['Key'].should eql 'foo,bar'
|
45
56
|
end
|
46
57
|
|
47
|
-
it '
|
48
|
-
req
|
49
|
-
|
50
|
-
req.params['Key'].should eql 'foo,bar'
|
58
|
+
it 'returns self' do
|
59
|
+
req.build({}).should eql req
|
51
60
|
end
|
52
61
|
end
|
53
62
|
|
54
|
-
describe '#
|
55
|
-
it '
|
56
|
-
req.
|
63
|
+
describe '#build!' do
|
64
|
+
it 'clears existing query' do
|
65
|
+
req.build 'Key' => 'value'
|
66
|
+
req.params.should have_key 'Key'
|
67
|
+
|
68
|
+
req.build!.params.should_not have_key 'Key'
|
57
69
|
end
|
58
70
|
end
|
59
71
|
|
60
72
|
describe '#get' do
|
61
|
-
before do
|
62
|
-
req.configure do |c|
|
63
|
-
c.key = 'foo'
|
64
|
-
c.secret = 'bar'
|
65
|
-
c.tag = 'baz'
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
73
|
it 'returns a response' do
|
70
74
|
req.get.should be_a Response
|
71
75
|
end
|
72
|
-
|
73
|
-
it 'raises an error if secret is missing' do
|
74
|
-
req.configure { |c| c.secret = nil }
|
75
|
-
|
76
|
-
expect { req.get }.to raise_error MissingSecret
|
77
|
-
end
|
78
76
|
end
|
79
77
|
|
80
78
|
describe '#params' do
|
81
|
-
|
82
|
-
req.configure do |c|
|
83
|
-
c.key = 'foo'
|
84
|
-
c.tag = 'bar'
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'raises an error if key is missing' do
|
89
|
-
req.configure { |c| c.key = nil }
|
90
|
-
|
91
|
-
expect { req.params }.to raise_error MissingKey
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'raises an error if tag is missing' do
|
95
|
-
req.configure { |c| c.tag = nil }
|
96
|
-
|
97
|
-
expect { req.params }.to raise_error MissingTag
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'includes common request parameters' do
|
79
|
+
it 'includes shared request parameters' do
|
101
80
|
req.params['Service'].should eql 'AWSECommerceService'
|
102
81
|
end
|
103
82
|
|
@@ -110,46 +89,21 @@ module Vacuum
|
|
110
89
|
req.params['Timestamp'].should =~ /^\d+-\d+-\d+T\d+:\d+:\d+Z$/
|
111
90
|
end
|
112
91
|
|
113
|
-
context 'when no API version is
|
92
|
+
context 'when no API version is given' do
|
114
93
|
it 'includes the current API version' do
|
115
94
|
req.params['Version'].should eql Request::CURRENT_API_VERSION
|
116
95
|
end
|
117
96
|
end
|
118
97
|
|
119
|
-
context 'when an API version is
|
120
|
-
it 'includes the
|
121
|
-
req
|
98
|
+
context 'when an API version is given' do
|
99
|
+
it 'includes the given API version' do
|
100
|
+
req.build 'Version' => '1'
|
122
101
|
req.params['Version'].should eql '1'
|
123
102
|
end
|
124
103
|
end
|
125
104
|
end
|
126
105
|
|
127
|
-
describe '#reset!' do
|
128
|
-
before do
|
129
|
-
req.configure do |c|
|
130
|
-
c.key = 'foo'
|
131
|
-
c.tag = 'bar'
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
it 'resets the request parameters' do
|
136
|
-
req << { 'Key' => 'value' }
|
137
|
-
req.params.should have_key 'Key'
|
138
|
-
|
139
|
-
req.reset!
|
140
|
-
req.params.should_not have_key 'Key'
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
106
|
describe '#url' do
|
145
|
-
before do
|
146
|
-
req.configure do |c|
|
147
|
-
c.key = 'foo'
|
148
|
-
c.secret = 'bar'
|
149
|
-
c.tag = 'baz'
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
107
|
it 'builds a URL' do
|
154
108
|
req.url.should be_a URI::HTTP
|
155
109
|
end
|
@@ -159,25 +113,18 @@ module Vacuum
|
|
159
113
|
end
|
160
114
|
|
161
115
|
it 'sorts the request parameters' do
|
162
|
-
req
|
116
|
+
req.build 'A' => 1
|
163
117
|
req.url.query.should match /^A=1&/
|
164
118
|
end
|
165
119
|
|
166
120
|
it 'URL-encodes values' do
|
167
|
-
req
|
121
|
+
req.build 'Key' => 'foo,bar'
|
168
122
|
req.url.query.should match /foo%2Cbar/
|
169
123
|
end
|
170
124
|
|
171
|
-
it '
|
125
|
+
it 'is signed' do
|
172
126
|
req.url.query.should match /&Signature=/
|
173
127
|
end
|
174
|
-
|
175
|
-
it 'raises an error if no secret is specified' do
|
176
|
-
expect do
|
177
|
-
req.configure { |c| c.secret = nil }
|
178
|
-
req.url
|
179
|
-
end.to raise_error MissingSecret
|
180
|
-
end
|
181
128
|
end
|
182
129
|
end
|
183
130
|
end
|
@@ -2,94 +2,78 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Vacuum
|
4
4
|
describe Response do
|
5
|
-
let(:
|
5
|
+
let(:res) do
|
6
6
|
body = File.read(File.expand_path('../../fixtures/http_response', __FILE__))
|
7
|
-
|
8
|
-
Response.new(body, code)
|
9
|
-
end
|
10
|
-
|
11
|
-
describe '#each' do
|
12
|
-
it 'yields matches to given block' do
|
13
|
-
yielded = false
|
14
|
-
resp.each('Item') do |item|
|
15
|
-
yielded = true
|
16
|
-
end
|
17
|
-
|
18
|
-
yielded.should be_true
|
19
|
-
end
|
7
|
+
Response.new(body, '200')
|
20
8
|
end
|
21
9
|
|
22
10
|
describe '#errors' do
|
23
11
|
it 'returns an array of errors' do
|
24
|
-
|
12
|
+
res.body = <<-EOF.gsub!(/>\s+</, '><').strip!
|
25
13
|
<?xml version=\"1.0\" ?>
|
26
|
-
<
|
14
|
+
<Response xmlns="http://example.com">
|
27
15
|
<Errors>
|
28
16
|
<Error>foo</Error>
|
29
17
|
</Errors>
|
30
|
-
</
|
18
|
+
</Response>
|
31
19
|
EOF
|
32
20
|
|
33
|
-
|
21
|
+
res.errors.should =~ ['foo']
|
34
22
|
end
|
35
23
|
end
|
36
24
|
|
37
|
-
describe '#
|
38
|
-
|
39
|
-
|
40
|
-
resp.stub!(:errors).and_return([])
|
41
|
-
|
42
|
-
resp.should_not have_errors
|
43
|
-
end
|
25
|
+
describe '#find' do
|
26
|
+
it 'returns an array of matching nodes' do
|
27
|
+
res.find('ASIN').should_not be_empty
|
44
28
|
end
|
45
29
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
resp.should have_errors
|
51
|
-
end
|
30
|
+
it 'yields matches to a block if given one' do
|
31
|
+
titles = res.find('Item') { |item| item['ItemAttributes']['Title'] }
|
32
|
+
titles.count.should eql 2
|
33
|
+
titles.each { |title| title.should be_a String }
|
52
34
|
end
|
53
35
|
end
|
54
36
|
|
55
|
-
describe '#
|
56
|
-
|
57
|
-
|
37
|
+
describe '#has_errors?' do
|
38
|
+
context 'when response does not contain any errors' do
|
39
|
+
it 'returns false' do
|
40
|
+
res.stub!(:errors).and_return([])
|
41
|
+
res.should_not have_errors
|
42
|
+
end
|
58
43
|
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe "#map" do
|
62
|
-
it "yields each match to a block and maps returned values" do
|
63
|
-
titles = resp.map('Item') { |i| i['ItemAttributes']['Title'] }
|
64
44
|
|
65
|
-
|
45
|
+
context 'when response contains errors' do
|
46
|
+
it 'returns true' do
|
47
|
+
res.stub!(:errors).and_return([1])
|
48
|
+
res.should have_errors
|
49
|
+
end
|
66
50
|
end
|
67
51
|
end
|
68
52
|
|
69
53
|
describe '#to_hash' do
|
70
|
-
it 'casts
|
71
|
-
|
54
|
+
it 'casts response to a hash' do
|
55
|
+
res.to_hash.should be_a Hash
|
72
56
|
end
|
73
57
|
end
|
74
58
|
|
75
59
|
describe '#valid?' do
|
76
60
|
context 'when HTTP status is OK' do
|
77
61
|
it 'returns true' do
|
78
|
-
|
62
|
+
res.should be_valid
|
79
63
|
end
|
80
64
|
end
|
81
65
|
|
82
66
|
context 'when HTTP status is not OK' do
|
83
67
|
it 'returns false' do
|
84
|
-
|
85
|
-
|
68
|
+
res.code = 403
|
69
|
+
res.should_not be_valid
|
86
70
|
end
|
87
71
|
end
|
88
72
|
end
|
89
73
|
|
90
74
|
describe '#xml' do
|
91
75
|
it 'returns a Nokogiri document' do
|
92
|
-
|
76
|
+
res.xml.should be_an_instance_of Nokogiri::XML::Document
|
93
77
|
end
|
94
78
|
end
|
95
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vacuum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
requirement: &
|
16
|
+
requirement: &70211676691980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,37 +21,28 @@ dependencies:
|
|
21
21
|
version: '1.4'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70211676691980
|
25
25
|
description: Vacuum is a Ruby wrapper to the Amazon Product Advertising API.
|
26
26
|
email:
|
27
|
-
-
|
27
|
+
- hakan.ensari@papercavalier.com
|
28
28
|
executables: []
|
29
29
|
extensions: []
|
30
30
|
extra_rdoc_files: []
|
31
31
|
files:
|
32
|
-
- lib/vacuum/
|
33
|
-
- lib/vacuum/
|
34
|
-
- lib/vacuum/cart_operations.rb
|
35
|
-
- lib/vacuum/error.rb
|
36
|
-
- lib/vacuum/locale.rb
|
37
|
-
- lib/vacuum/lookup_operations.rb
|
32
|
+
- lib/vacuum/em.rb
|
33
|
+
- lib/vacuum/hash_builder.rb
|
38
34
|
- lib/vacuum/request.rb
|
39
35
|
- lib/vacuum/response.rb
|
40
|
-
- lib/vacuum/search_operations.rb
|
41
36
|
- lib/vacuum/version.rb
|
42
37
|
- lib/vacuum.rb
|
43
38
|
- LICENSE
|
44
39
|
- README.md
|
45
40
|
- spec/fixtures/http_response
|
46
41
|
- spec/spec_helper.rb
|
47
|
-
- spec/vacuum/
|
48
|
-
- spec/vacuum/cart_operations_spec.rb
|
49
|
-
- spec/vacuum/cart_spec.rb
|
50
|
-
- spec/vacuum/lookup_operations_spec.rb
|
42
|
+
- spec/vacuum/hash_builder_spec.rb
|
51
43
|
- spec/vacuum/request_spec.rb
|
52
44
|
- spec/vacuum/response_spec.rb
|
53
|
-
|
54
|
-
homepage: http://code.papercavalier.com/vacuum/
|
45
|
+
homepage: http://github.com/hakanensari/vacuum
|
55
46
|
licenses: []
|
56
47
|
post_install_message:
|
57
48
|
rdoc_options: []
|
@@ -71,17 +62,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
62
|
version: '0'
|
72
63
|
requirements: []
|
73
64
|
rubyforge_project:
|
74
|
-
rubygems_version: 1.8.
|
65
|
+
rubygems_version: 1.8.11
|
75
66
|
signing_key:
|
76
67
|
specification_version: 3
|
77
68
|
summary: A Ruby wrapper to the Amazon Product Advertising API
|
78
69
|
test_files:
|
79
70
|
- spec/fixtures/http_response
|
80
71
|
- spec/spec_helper.rb
|
81
|
-
- spec/vacuum/
|
82
|
-
- spec/vacuum/cart_operations_spec.rb
|
83
|
-
- spec/vacuum/cart_spec.rb
|
84
|
-
- spec/vacuum/lookup_operations_spec.rb
|
72
|
+
- spec/vacuum/hash_builder_spec.rb
|
85
73
|
- spec/vacuum/request_spec.rb
|
86
74
|
- spec/vacuum/response_spec.rb
|
87
|
-
- spec/vacuum/search_operations_spec.rb
|
data/lib/vacuum/cart.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
module Vacuum
|
2
|
-
class Cart
|
3
|
-
# @return [String] cart_id
|
4
|
-
attr :id
|
5
|
-
|
6
|
-
# @return [String] hmac
|
7
|
-
attr :hmac
|
8
|
-
|
9
|
-
attr :items
|
10
|
-
|
11
|
-
# @return [Vacuum::Response] last_response last response
|
12
|
-
# returned by the Amazon API
|
13
|
-
attr :last_response
|
14
|
-
|
15
|
-
# @return [String] purchase_url
|
16
|
-
attr :purchase_url
|
17
|
-
|
18
|
-
attr :sub_total
|
19
|
-
|
20
|
-
# Creates a new cart
|
21
|
-
#
|
22
|
-
# @param [Vacuum::Request] req an API request
|
23
|
-
# @param [Hash] params a hash of parameters
|
24
|
-
def initialize(req, params)
|
25
|
-
@req = req
|
26
|
-
get 'Create', params
|
27
|
-
end
|
28
|
-
|
29
|
-
# Clears the cart
|
30
|
-
#
|
31
|
-
# @param [Hash] params a hash of parameters
|
32
|
-
def clear(params = {})
|
33
|
-
get 'Clear', params
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def get(operation, params)
|
39
|
-
@req.reset!
|
40
|
-
|
41
|
-
if id
|
42
|
-
@req << { 'CartId' => id,
|
43
|
-
'HMAC' => hmac }
|
44
|
-
end
|
45
|
-
|
46
|
-
@req << { 'Operation' => "Cart#{operation}" }.merge(params)
|
47
|
-
|
48
|
-
@last_response = @req.get
|
49
|
-
@items = @last_response.find('CartItems')
|
50
|
-
@id = @last_response.find('CartId').first
|
51
|
-
@hmac = @last_response.find('HMAC').first
|
52
|
-
@purchase_url = @last_response.find('PurchaseURL').first
|
53
|
-
@sub_total = @last_response.find('SubTotal').first
|
54
|
-
end
|
55
|
-
|
56
|
-
# Add items to cart
|
57
|
-
#
|
58
|
-
# @param [String] cart_id
|
59
|
-
# @param [String] hmac
|
60
|
-
# @param [Hash] params
|
61
|
-
# @return [Vacuum::Cart] a response
|
62
|
-
# def add_to_cart(cart_id, hmac, params)
|
63
|
-
# cartify 'Add', { 'CartId' => cart_id,
|
64
|
-
# 'HMAC' => hmac }.merge(params)
|
65
|
-
# end
|
66
|
-
|
67
|
-
|
68
|
-
# Gets an existing cart
|
69
|
-
#
|
70
|
-
# @param [String] cart_id
|
71
|
-
# @param [String] hmac
|
72
|
-
# @param [Hash] params
|
73
|
-
# @return [Vacuum::Cart] a response
|
74
|
-
# def get_cart(cart_id, hmac, params)
|
75
|
-
# cartify 'Get', { 'CartId' => cart_id,
|
76
|
-
# 'HMAC' => hmac }.merge(params)
|
77
|
-
# end
|
78
|
-
|
79
|
-
# Modifies an existing cart
|
80
|
-
#
|
81
|
-
# @param [String] cart_id
|
82
|
-
# @param [String] hmac
|
83
|
-
# @param [Hash] params
|
84
|
-
# @return [Vacuum::Cart] a response
|
85
|
-
# def modify_cart(cart_id, hmac, params)
|
86
|
-
# cartify 'Modify', { 'CartId' => cart_id,
|
87
|
-
# 'HMAC' => hmac }.merge(params)
|
88
|
-
# end
|
89
|
-
end
|
90
|
-
end
|
data/lib/vacuum/error.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Vacuum
|
2
|
-
# Raised when a bad locale is specified
|
3
|
-
class BadLocale < ArgumentError; end
|
4
|
-
|
5
|
-
# Raised when the Amazon key is not specified
|
6
|
-
class MissingKey < ArgumentError; end
|
7
|
-
|
8
|
-
# Raised when the Amazon secret is not specified
|
9
|
-
class MissingSecret < ArgumentError; end
|
10
|
-
|
11
|
-
# Raised when the Amazon associate tag is not specified
|
12
|
-
class MissingTag < ArgumentError; end
|
13
|
-
end
|
data/lib/vacuum/locale.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
module Vacuum
|
2
|
-
# An Amazon locale
|
3
|
-
class Locale
|
4
|
-
# Amazon hosts
|
5
|
-
HOSTS = { :ca => 'ecs.amazonaws.ca',
|
6
|
-
:cn => 'webservices.amazon.cn',
|
7
|
-
:de => 'ecs.amazonaws.de',
|
8
|
-
:es => 'webservices.amazon.es',
|
9
|
-
:fr => 'ecs.amazonaws.fr',
|
10
|
-
:it => 'webservices.amazon.it',
|
11
|
-
:jp => 'ecs.amazonaws.jp',
|
12
|
-
:us => 'ecs.amazonaws.com',
|
13
|
-
:uk => 'ecs.amazonaws.co.uk' }
|
14
|
-
|
15
|
-
# Country codes for Amazon locales
|
16
|
-
LOCALES = HOSTS.keys
|
17
|
-
|
18
|
-
# @return [String] the Amazon Web Services access key
|
19
|
-
attr_accessor :key
|
20
|
-
|
21
|
-
# @return [String] the Amazon Web Services secret
|
22
|
-
attr_accessor :secret
|
23
|
-
|
24
|
-
# @return [String] the Amazon associate tag
|
25
|
-
attr_accessor :tag
|
26
|
-
|
27
|
-
# @param [Symbol] locale the locale key
|
28
|
-
# @raise [Vacuum::BadLocale] locale is bad
|
29
|
-
def initialize(locale)
|
30
|
-
raise BadLocale unless LOCALES.include?(locale)
|
31
|
-
@locale = locale
|
32
|
-
end
|
33
|
-
|
34
|
-
# @return [String] the Amazon host
|
35
|
-
def host
|
36
|
-
HOSTS[@locale]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
module Vacuum
|
2
|
-
# Lookup operations
|
3
|
-
module LookupOperations
|
4
|
-
# Given up to ten item ids, returns some or all of the item
|
5
|
-
# attributes, depending on the response group specified in the
|
6
|
-
# request.
|
7
|
-
#
|
8
|
-
# @param [Array] item_ids splat of item IDs and an optional hash of
|
9
|
-
# parameters
|
10
|
-
# @return [Vacuum::Response] a response
|
11
|
-
#
|
12
|
-
# Id Type defaults to ASIN.
|
13
|
-
#
|
14
|
-
# @example The following returns some basic information for the
|
15
|
-
# ASIN 0679753354.
|
16
|
-
#
|
17
|
-
# req.find('0679753354')
|
18
|
-
#
|
19
|
-
# @example The following request returns cover art for the same
|
20
|
-
# ASIN.
|
21
|
-
#
|
22
|
-
# req.find('0679753354', :response_group => 'Images')
|
23
|
-
#
|
24
|
-
def find(*item_ids)
|
25
|
-
reset!
|
26
|
-
params = item_ids.last.is_a?(Hash) ? item_ids.pop : {}
|
27
|
-
self.<<({ 'Operation' => 'ItemLookup',
|
28
|
-
'ItemId' => item_ids }.merge(params))
|
29
|
-
|
30
|
-
get
|
31
|
-
end
|
32
|
-
|
33
|
-
# Given a browse node ID, returns the specified browse node’s name,
|
34
|
-
# children, and ancestors.
|
35
|
-
#
|
36
|
-
# @param [String] browse_node_id browse node ID
|
37
|
-
# @params [Hash] params hash of parameters
|
38
|
-
# @return [Vacuum::Response] a response
|
39
|
-
def find_browse_node(browse_node_id, params = {})
|
40
|
-
reset!
|
41
|
-
self.<<({ 'Operation' => 'BrowseNodeLookup',
|
42
|
-
'BrowseNodeId' => browse_node_id }.merge(params))
|
43
|
-
|
44
|
-
get
|
45
|
-
end
|
46
|
-
|
47
|
-
# Given up to ten item ids, returns up to ten products per page
|
48
|
-
# that are similar to those items
|
49
|
-
#
|
50
|
-
# @param [Array] item_ids splat of item IDs and an optional hash of
|
51
|
-
# parameters
|
52
|
-
# @return [Vacuum::Response] a response
|
53
|
-
def find_similar(*item_ids)
|
54
|
-
reset!
|
55
|
-
params = item_ids.last.is_a?(Hash) ? item_ids.pop : {}
|
56
|
-
self.<<({ 'Operation' => 'SimilarityLookup',
|
57
|
-
'ItemId' => item_ids }.merge(params))
|
58
|
-
|
59
|
-
get
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|