a2z 0.0.2 → 0.0.3
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/CHANGELOG.md +22 -0
- data/README.md +63 -0
- data/lib/a2z/responses.rb +2 -0
- data/lib/a2z/responses/image.rb +24 -0
- data/lib/a2z/responses/image_set.rb +28 -0
- data/lib/a2z/responses/item.rb +18 -1
- data/lib/a2z/version.rb +1 -1
- data/spec/a2z/responses/image_set_spec.rb +13 -0
- data/spec/a2z/responses/image_spec.rb +13 -0
- data/spec/a2z/responses/item_link_spec.rb +2 -2
- data/spec/a2z/responses/item_lookup_spec.rb +2 -2
- data/spec/a2z/responses/item_search_spec.rb +2 -2
- metadata +11 -4
data/CHANGELOG.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
## A2z 0.0.3 (Dec 30, 2012)
|
2
|
+
|
3
|
+
* Add `small_image`, `medium_image`, and `large_image` accessors on `Item`,
|
4
|
+
populating them when present in an item lookup or item search API response.
|
5
|
+
*Matt Huggins*
|
6
|
+
|
7
|
+
* Add `image_sets` accessor on `Item`, populating them when present in an item
|
8
|
+
lookup or item search API response. *Matt Huggins*
|
9
|
+
|
10
|
+
* Add `Item#parent_asin` method to retrieve ASIN for parent item when
|
11
|
+
available. *Matt Huggins*
|
12
|
+
|
13
|
+
* Create this change log file. *Matt Huggins*
|
14
|
+
|
15
|
+
## A2z 0.0.2 (Dec 29, 2012)
|
16
|
+
|
17
|
+
* Create `Item#keys` method & dynamic boolean methods to check for item
|
18
|
+
attribute existence. *Matt Huggins*
|
19
|
+
|
20
|
+
## A2z 0.0.1 (Dec 27, 2012)
|
21
|
+
|
22
|
+
* Initial release. *Matt Huggins*
|
data/README.md
CHANGED
@@ -219,6 +219,69 @@ For example:
|
|
219
219
|
item.detail_page_url
|
220
220
|
=> ""http://www.amazon.com/Away-From-World-Deluxe-Version/dp/B008FERRFO..."
|
221
221
|
|
222
|
+
When an item lookup or item search includes the "Images" response group, items
|
223
|
+
will also have their `small_image`, `medium_image`, `large_image`, and
|
224
|
+
`image_sets` attributes populated, assuming they are included in the API
|
225
|
+
response.
|
226
|
+
|
227
|
+
response = client.item_lookup do
|
228
|
+
id 'B008VVEJNE'
|
229
|
+
response_group 'Images'
|
230
|
+
end
|
231
|
+
|
232
|
+
item = response.item
|
233
|
+
|
234
|
+
item.small_image # => #<A2z::Responses::Image ...>
|
235
|
+
item.medium_image # => #<A2z::Responses::Image ...>
|
236
|
+
item.large_image # => #<A2z::Responses::Image ...>
|
237
|
+
|
238
|
+
item.image_sets.size # => 2
|
239
|
+
item.image_sets.keys # => [:primary, :variant]
|
240
|
+
item.image_sets[:primary] # => #<A2z::Responses::ImageSet ...>
|
241
|
+
|
242
|
+
Refer to the Image Sets and Images sections below for more information on using
|
243
|
+
this objects.
|
244
|
+
|
245
|
+
### Image Sets
|
246
|
+
|
247
|
+
Image sets are accessible on items when the "Images" responses group is
|
248
|
+
included as part of an item lookup or item search request. Image sets are
|
249
|
+
relatively simple objects, only including a category name and hash of images
|
250
|
+
keyed by size.
|
251
|
+
|
252
|
+
For example:
|
253
|
+
|
254
|
+
response = client.item_lookup do
|
255
|
+
id 'B008VVEJNE'
|
256
|
+
response_group 'Images'
|
257
|
+
end
|
258
|
+
|
259
|
+
item_set = response.item.image_sets[:primary]
|
260
|
+
|
261
|
+
item_set.category # => "primary"
|
262
|
+
item_set.images.keys # => [:swatch, :small, :thumbnail, :tiny, :medium, :large]
|
263
|
+
item_set.images[:swatch] # => #<A2z::Responses::Image ...>
|
264
|
+
|
265
|
+
Refer to the Images section below for more information on using this objects.
|
266
|
+
|
267
|
+
### Images
|
268
|
+
|
269
|
+
Images are accessible on items and through item sets when the "Images" response
|
270
|
+
group is included as part of an item lookup or item search request. Images
|
271
|
+
include only vital information, including the URL, width, and height in pixels.
|
272
|
+
|
273
|
+
For example:
|
274
|
+
|
275
|
+
response = client.item_lookup do
|
276
|
+
id 'B008VVEJNE'
|
277
|
+
response_group 'Images'
|
278
|
+
end
|
279
|
+
|
280
|
+
image = response.item.large_image
|
281
|
+
image.url # => "http://ecx.images-amazon.com/images/I/411%2BCDuXoSL.jpg"
|
282
|
+
image.width # => 297
|
283
|
+
image.height # => 500
|
284
|
+
|
222
285
|
### Operation Requests
|
223
286
|
|
224
287
|
Item lookup and item search response objects include an
|
data/lib/a2z/responses.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
module A2z
|
2
|
+
module Responses
|
3
|
+
class Image
|
4
|
+
attr_accessor :url, :width, :height
|
5
|
+
|
6
|
+
def width=(value)
|
7
|
+
@width = value.to_i
|
8
|
+
end
|
9
|
+
|
10
|
+
def height=(value)
|
11
|
+
@height = value.to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.from_response(data)
|
15
|
+
new.tap do |image|
|
16
|
+
image.url = data['URL']
|
17
|
+
image.width = data['Width']
|
18
|
+
image.height = data['Height']
|
19
|
+
image.freeze
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module A2z
|
2
|
+
module Responses
|
3
|
+
class ImageSet
|
4
|
+
include Helpers
|
5
|
+
|
6
|
+
attr_accessor :category, :images
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@images = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.from_response(data)
|
13
|
+
new.tap do |image_set|
|
14
|
+
image_set.category = data['Category']
|
15
|
+
|
16
|
+
data.each_pair do |key, value|
|
17
|
+
if key =~ /\A(.+)Image\z/
|
18
|
+
name = underscore($1).to_sym
|
19
|
+
image_set.images[name] = Image.from_response(value)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
image_set.freeze
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/a2z/responses/item.rb
CHANGED
@@ -3,11 +3,13 @@ module A2z
|
|
3
3
|
class Item
|
4
4
|
include Helpers
|
5
5
|
|
6
|
-
attr_accessor :asin, :detail_page_url, :links
|
6
|
+
attr_accessor :asin, :parent_asin, :detail_page_url, :links, :image_sets,
|
7
|
+
:small_image, :medium_image, :large_image
|
7
8
|
|
8
9
|
def initialize
|
9
10
|
@links = []
|
10
11
|
@attrs = {}
|
12
|
+
@image_sets = {}
|
11
13
|
end
|
12
14
|
|
13
15
|
def keys
|
@@ -45,6 +47,7 @@ module A2z
|
|
45
47
|
def self.from_response(data)
|
46
48
|
new.tap do |item|
|
47
49
|
item.asin = data['ASIN']
|
50
|
+
item.parent_asin = data['ParentASIN']
|
48
51
|
item.detail_page_url = data['DetailPageURL']
|
49
52
|
|
50
53
|
if data['ItemLinks']
|
@@ -55,6 +58,20 @@ module A2z
|
|
55
58
|
data['ItemAttributes'].each { |key, value| item[underscore(key)] = value }
|
56
59
|
end
|
57
60
|
|
61
|
+
if data['ImageSets'] && data['ImageSets']['ImageSet']
|
62
|
+
image_sets = data['ImageSets']['ImageSet']
|
63
|
+
image_sets = [image_sets] unless image_sets.kind_of?(Array)
|
64
|
+
|
65
|
+
image_sets.each do |image_set|
|
66
|
+
image_set = ImageSet.from_response(image_set)
|
67
|
+
item.image_sets[image_set.category.to_sym] = image_set
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
item.small_image = Image.from_response(data['SmallImage']) if data['SmallImage']
|
72
|
+
item.medium_image = Image.from_response(data['MediumImage']) if data['MediumImage']
|
73
|
+
item.large_image = Image.from_response(data['LargeImage']) if data['LargeImage']
|
74
|
+
|
58
75
|
item.freeze
|
59
76
|
end
|
60
77
|
end
|
data/lib/a2z/version.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe A2z::Responses::ImageSet do
|
4
|
+
subject do
|
5
|
+
A2z::Responses::ImageSet.from_response(image_set_hash)
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:image_set_hash) { Hash.new }
|
9
|
+
|
10
|
+
describe '.from_response' do
|
11
|
+
it 'should return an image set object'
|
12
|
+
end
|
13
|
+
end
|
@@ -2,10 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe A2z::Responses::ItemLink do
|
4
4
|
subject do
|
5
|
-
A2z::Responses::ItemLink.from_response(
|
5
|
+
A2z::Responses::ItemLink.from_response(item_link_hash)
|
6
6
|
end
|
7
7
|
|
8
|
-
let(:
|
8
|
+
let(:item_link_hash) { Hash.new }
|
9
9
|
|
10
10
|
describe '.from_response' do
|
11
11
|
it 'should return an item link object'
|
@@ -2,10 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe A2z::Responses::ItemLookup do
|
4
4
|
subject do
|
5
|
-
A2z::Responses::ItemLookup.from_response(
|
5
|
+
A2z::Responses::ItemLookup.from_response(item_lookup_hash)
|
6
6
|
end
|
7
7
|
|
8
|
-
let(:
|
8
|
+
let(:item_lookup_hash) { Hash.new }
|
9
9
|
|
10
10
|
describe '.from_response' do
|
11
11
|
it 'should return an item lookup object'
|
@@ -2,10 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe A2z::Responses::ItemSearch do
|
4
4
|
subject do
|
5
|
-
A2z::Responses::ItemSearch.from_response(
|
5
|
+
A2z::Responses::ItemSearch.from_response(item_search_hash)
|
6
6
|
end
|
7
7
|
|
8
|
-
let(:
|
8
|
+
let(:item_search_hash) { Hash.new }
|
9
9
|
|
10
10
|
describe '.from_response' do
|
11
11
|
it 'should return an item search object'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: a2z
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matt Huggins
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-12-
|
18
|
+
date: 2012-12-30 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -84,6 +84,7 @@ extra_rdoc_files: []
|
|
84
84
|
|
85
85
|
files:
|
86
86
|
- .gitignore
|
87
|
+
- CHANGELOG.md
|
87
88
|
- Gemfile
|
88
89
|
- LICENSE
|
89
90
|
- README.md
|
@@ -98,6 +99,8 @@ files:
|
|
98
99
|
- lib/a2z/requests/item_search.rb
|
99
100
|
- lib/a2z/requests/response_group.rb
|
100
101
|
- lib/a2z/responses.rb
|
102
|
+
- lib/a2z/responses/image.rb
|
103
|
+
- lib/a2z/responses/image_set.rb
|
101
104
|
- lib/a2z/responses/item.rb
|
102
105
|
- lib/a2z/responses/item_link.rb
|
103
106
|
- lib/a2z/responses/item_lookup.rb
|
@@ -108,6 +111,8 @@ files:
|
|
108
111
|
- spec/a2z/requests/item_lookup_spec.rb
|
109
112
|
- spec/a2z/requests/item_search_spec.rb
|
110
113
|
- spec/a2z/requests/response_group_spec.rb
|
114
|
+
- spec/a2z/responses/image_set_spec.rb
|
115
|
+
- spec/a2z/responses/image_spec.rb
|
111
116
|
- spec/a2z/responses/item_link_spec.rb
|
112
117
|
- spec/a2z/responses/item_lookup_spec.rb
|
113
118
|
- spec/a2z/responses/item_search_spec.rb
|
@@ -155,6 +160,8 @@ test_files:
|
|
155
160
|
- spec/a2z/requests/item_lookup_spec.rb
|
156
161
|
- spec/a2z/requests/item_search_spec.rb
|
157
162
|
- spec/a2z/requests/response_group_spec.rb
|
163
|
+
- spec/a2z/responses/image_set_spec.rb
|
164
|
+
- spec/a2z/responses/image_spec.rb
|
158
165
|
- spec/a2z/responses/item_link_spec.rb
|
159
166
|
- spec/a2z/responses/item_lookup_spec.rb
|
160
167
|
- spec/a2z/responses/item_search_spec.rb
|