asin 1.1.2 → 2.0.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/.gitignore +1 -0
- data/.irbrc +12 -0
- data/.rspec +1 -0
- data/.travis.yml +2 -3
- data/CHANGELOG.md +8 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +72 -17
- data/README.md +33 -38
- data/asin.gemspec +1 -1
- data/lib/asin.rb +4 -7
- data/lib/asin/adapter.rb +222 -0
- data/lib/asin/client.rb +21 -135
- data/lib/asin/configuration.rb +1 -7
- data/lib/asin/version.rb +1 -1
- data/spec/cassettes/asin/lookup_and_search_should_have_metadata.yml +1 -1
- data/spec/lib/browse_node_spec.rb +3 -3
- data/spec/lib/cart_spec.rb +13 -106
- data/spec/lib/config_spec.rb +11 -11
- data/spec/lib/search_spec.rb +53 -42
- data/spec/lib/similarity_spec.rb +4 -4
- data/spec/spec_helper.rb +5 -1
- metadata +20 -21
- data/lib/asin/simple_cart.rb +0 -54
- data/lib/asin/simple_item.rb +0 -44
- data/lib/asin/simple_node.rb +0 -44
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 00b2605291551bb77e09ebf2bf7f60fa0d7ec6c3
|
|
4
|
+
data.tar.gz: 63d7a88fffc477049a4e1419e3d761133f35cc5f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0250269c613eca2fc754638bedeb58b5b05719d954e2e57534e76fb16863972bff9bce3e3604808060ad9108b2039b66d7d447d76b4c4ac2d6c18c3f9743084a
|
|
7
|
+
data.tar.gz: 4bcb447e52f21214adb88c0e3b19d96399e3305fa02a1b95352f98a0eab394b55fc974d164c5d536d54f1e5a149301ce54a6b2d752f9298e29c1c6481b9db657
|
data/.gitignore
CHANGED
data/.irbrc
ADDED
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--color
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 2.0.0
|
|
2
|
+
|
|
3
|
+
* configurable items are no longer supported, in favor of Hashie::Rash, see upgrading instructions
|
|
4
|
+
|
|
5
|
+
## 1.2.0
|
|
6
|
+
|
|
7
|
+
* Added more methods to simplify accessing certain nodes. (kyletcarlson) https://github.com/phoet/asin/pull/30
|
|
8
|
+
|
|
1
9
|
## 1.1.2
|
|
2
10
|
|
|
3
11
|
* compatibility update https://github.com/phoet/asin/issues/22
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,36 +1,84 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
asin (1.
|
|
4
|
+
asin (1.2.0)
|
|
5
5
|
confiture (>= 0.1)
|
|
6
6
|
crack (>= 0.3)
|
|
7
7
|
hashie (>= 1.1)
|
|
8
8
|
httpi (>= 0.9)
|
|
9
|
+
rash (>= 0.4)
|
|
9
10
|
|
|
10
11
|
GEM
|
|
11
12
|
remote: http://rubygems.org/
|
|
12
13
|
specs:
|
|
13
14
|
addressable (2.3.2)
|
|
14
|
-
|
|
15
|
+
binding_of_caller (0.7.2)
|
|
16
|
+
debug_inspector (>= 0.0.1)
|
|
17
|
+
bond (0.5.1)
|
|
18
|
+
coderay (1.1.0)
|
|
19
|
+
colorize (0.5.8)
|
|
20
|
+
columnize (0.3.6)
|
|
15
21
|
confiture (0.1.4)
|
|
22
|
+
coveralls (0.6.7)
|
|
23
|
+
colorize
|
|
24
|
+
multi_json (~> 1.3)
|
|
25
|
+
rest-client
|
|
26
|
+
simplecov (>= 0.7)
|
|
27
|
+
thor
|
|
16
28
|
crack (0.3.1)
|
|
29
|
+
debug_inspector (0.0.2)
|
|
30
|
+
debugger (1.6.6)
|
|
31
|
+
columnize (>= 0.3.1)
|
|
32
|
+
debugger-linecache (~> 1.2.0)
|
|
33
|
+
debugger-ruby_core_source (~> 1.3.2)
|
|
34
|
+
debugger-linecache (1.2.0)
|
|
35
|
+
debugger-ruby_core_source (1.3.2)
|
|
17
36
|
diff-lcs (1.1.3)
|
|
18
|
-
hashie (
|
|
37
|
+
hashie (2.0.5)
|
|
19
38
|
httpclient (2.3.0.1)
|
|
20
|
-
httpi (2.
|
|
39
|
+
httpi (2.1.0)
|
|
21
40
|
rack
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
41
|
+
rubyntlm (~> 0.3.2)
|
|
42
|
+
interception (0.5)
|
|
43
|
+
jist (1.5.1)
|
|
44
|
+
json
|
|
45
|
+
json (1.8.1)
|
|
46
|
+
method_source (0.8.2)
|
|
47
|
+
mime-types (1.23)
|
|
48
|
+
multi_json (1.7.6)
|
|
49
|
+
pry (0.9.12.6)
|
|
50
|
+
coderay (~> 1.0)
|
|
25
51
|
method_source (~> 0.8)
|
|
26
|
-
slop (~> 3.
|
|
27
|
-
pry (0.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
52
|
+
slop (~> 3.4)
|
|
53
|
+
pry-debugger (0.2.2)
|
|
54
|
+
debugger (~> 1.3)
|
|
55
|
+
pry (~> 0.9.10)
|
|
56
|
+
pry-doc (0.6.0)
|
|
57
|
+
pry (~> 0.9)
|
|
58
|
+
yard (~> 0.8)
|
|
59
|
+
pry-docmore (0.1.1)
|
|
60
|
+
pry
|
|
61
|
+
pry-doc
|
|
62
|
+
pry-plus (1.0.0)
|
|
63
|
+
bond
|
|
64
|
+
jist
|
|
65
|
+
pry-debugger
|
|
66
|
+
pry-doc
|
|
67
|
+
pry-docmore
|
|
68
|
+
pry-rescue
|
|
69
|
+
pry-stack_explorer
|
|
70
|
+
pry-rescue (1.4.0)
|
|
71
|
+
interception (>= 0.4)
|
|
72
|
+
pry
|
|
73
|
+
pry-stack_explorer (0.4.9.1)
|
|
74
|
+
binding_of_caller (>= 0.7)
|
|
75
|
+
pry (>= 0.9.11)
|
|
76
|
+
rack (1.5.2)
|
|
33
77
|
rake (0.9.2.2)
|
|
78
|
+
rash (0.4.0)
|
|
79
|
+
hashie (~> 2.0.0)
|
|
80
|
+
rest-client (1.6.7)
|
|
81
|
+
mime-types (>= 1.16)
|
|
34
82
|
rspec (2.11.0)
|
|
35
83
|
rspec-core (~> 2.11.0)
|
|
36
84
|
rspec-expectations (~> 2.11.0)
|
|
@@ -39,12 +87,18 @@ GEM
|
|
|
39
87
|
rspec-expectations (2.11.3)
|
|
40
88
|
diff-lcs (~> 1.1.3)
|
|
41
89
|
rspec-mocks (2.11.3)
|
|
42
|
-
|
|
43
|
-
|
|
90
|
+
rubyntlm (0.3.4)
|
|
91
|
+
simplecov (0.7.1)
|
|
92
|
+
multi_json (~> 1.0)
|
|
93
|
+
simplecov-html (~> 0.7.1)
|
|
94
|
+
simplecov-html (0.7.1)
|
|
95
|
+
slop (3.5.0)
|
|
96
|
+
thor (0.18.1)
|
|
44
97
|
vcr (2.2.5)
|
|
45
98
|
webmock (1.8.11)
|
|
46
99
|
addressable (>= 2.2.7)
|
|
47
100
|
crack (>= 0.1.7)
|
|
101
|
+
yard (0.8.7.3)
|
|
48
102
|
|
|
49
103
|
PLATFORMS
|
|
50
104
|
java
|
|
@@ -52,8 +106,9 @@ PLATFORMS
|
|
|
52
106
|
|
|
53
107
|
DEPENDENCIES
|
|
54
108
|
asin!
|
|
109
|
+
coveralls
|
|
55
110
|
httpclient (>= 2.2.3)
|
|
56
|
-
pry
|
|
111
|
+
pry-plus
|
|
57
112
|
rake (~> 0.9.2.2)
|
|
58
113
|
rspec (~> 2.11.0)
|
|
59
114
|
vcr (~> 2.2.5)
|
data/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
## Infos
|
|
2
2
|
|
|
3
|
-
[](https://travis-ci.org/phoet/asin)
|
|
4
|
+
[](https://codeclimate.com/github/phoet/asin)
|
|
5
|
+
[](https://coveralls.io/r/phoet/asin?branch=master)
|
|
4
6
|
|
|
5
7
|
ASIN is a simple, extensible wrapper for parts of the REST-API of Amazon Product Advertising API (aka Associates Web Service aka Amazon E-Commerce Service).
|
|
6
8
|
|
|
@@ -10,6 +12,19 @@ Have a look at the [RDOC](http://rdoc.info/projects/phoet/asin) for this project
|
|
|
10
12
|
|
|
11
13
|
The gem runs smoothly with Rails 3 and is tested against multiple rubies. See *.travis.yml* for details.
|
|
12
14
|
|
|
15
|
+
|
|
16
|
+
## Upgrading from Version 1.x
|
|
17
|
+
|
|
18
|
+
Version 2 removes all the SimpleXXX classes in favor of Hashie::Rash.
|
|
19
|
+
|
|
20
|
+
The old api is available if you require the ASIN::Adapter
|
|
21
|
+
|
|
22
|
+
require 'asin'
|
|
23
|
+
require 'asin/adapter'
|
|
24
|
+
|
|
25
|
+
It's also a good starting point for looking into writing your own API adapter.
|
|
26
|
+
|
|
27
|
+
|
|
13
28
|
## Installation
|
|
14
29
|
|
|
15
30
|
gem install asin
|
|
@@ -20,6 +35,7 @@ or in your Gemfile:
|
|
|
20
35
|
gem 'asin'
|
|
21
36
|
gem 'httpclient' # optional, see HTTPI
|
|
22
37
|
|
|
38
|
+
|
|
23
39
|
## Configuration
|
|
24
40
|
|
|
25
41
|
Rails style initializer (config/initializers/asin.rb):
|
|
@@ -32,6 +48,7 @@ Rails style initializer (config/initializers/asin.rb):
|
|
|
32
48
|
|
|
33
49
|
Have a look at ASIN::Configuration class for all the details.
|
|
34
50
|
|
|
51
|
+
|
|
35
52
|
## Usage
|
|
36
53
|
|
|
37
54
|
ASIN is designed as a module, so you can include it into any object you like:
|
|
@@ -58,23 +75,19 @@ But you can also use the *instance* method to get a proxy-object:
|
|
|
58
75
|
items = client.lookup '1430218150'
|
|
59
76
|
|
|
60
77
|
# have a look at the title of the item
|
|
61
|
-
items.first.title
|
|
78
|
+
items.first.item_attributes.title
|
|
62
79
|
=> Learn Objective-C on the Mac (Learn Series)
|
|
63
80
|
|
|
64
81
|
# search for any kind of stuff on amazon with keywords
|
|
65
82
|
items = search_keywords 'Learn', 'Objective-C'
|
|
66
|
-
items.first.title
|
|
83
|
+
items.first.item_attributes.title
|
|
67
84
|
=> "Learn Objective-C on the Mac (Learn Series)"
|
|
68
85
|
|
|
69
86
|
# search for any kind of stuff on amazon with custom parameters
|
|
70
87
|
search :Keywords => 'Learn Objective-C', :SearchIndex => :Books
|
|
71
|
-
items.first.title
|
|
88
|
+
items.first.item_attributes.title
|
|
72
89
|
=> "Learn Objective-C on the Mac (Learn Series)"
|
|
73
90
|
|
|
74
|
-
# access the internal data representation (Hashie::Mash)
|
|
75
|
-
item.raw.ItemAttributes.ListPrice.FormattedPrice
|
|
76
|
-
=> $39.99
|
|
77
|
-
|
|
78
91
|
# search for similar items like the one you already have
|
|
79
92
|
items = client.similar '1430218150'
|
|
80
93
|
|
|
@@ -84,51 +97,31 @@ There is an additional set of methods to support AWS cart operations:
|
|
|
84
97
|
|
|
85
98
|
# create a cart with an item
|
|
86
99
|
cart = client.create_cart({:asin => '1430218150', :quantity => 1})
|
|
87
|
-
cart.
|
|
88
|
-
=> [<#Hashie::
|
|
89
|
-
|
|
90
|
-
# get an already existing cart from a CartId and HMAC
|
|
91
|
-
cart = client.get_cart('176-9182855-2326919', 'KgeVCA0YJTbuN/7Ibakrk/KnHWA=')
|
|
92
|
-
cart.empty?
|
|
93
|
-
=> false
|
|
100
|
+
cart.cart_items.cart_item
|
|
101
|
+
=> [<#Hashie::Rash ASIN="1430218150" CartItemId="U3G241HVLLB8N6" ... >]
|
|
94
102
|
|
|
95
103
|
# clear everything from the cart
|
|
96
104
|
cart = client.clear_cart(cart)
|
|
97
|
-
cart.
|
|
98
|
-
=>
|
|
99
|
-
|
|
100
|
-
# add items to the cart
|
|
101
|
-
cart = client.add_items(cart, {:asin => '1430216263', :quantity => 2})
|
|
102
|
-
cart.empty?
|
|
103
|
-
=> false
|
|
105
|
+
cart.cart_items.cart_item
|
|
106
|
+
=> []
|
|
104
107
|
|
|
105
108
|
# update items in the cart
|
|
106
109
|
cart = client.update_items(cart, {:cart_item_id => cart.items.first.CartItemId, :action => :SaveForLater}, {:cart_item_id => cart.items.first.CartItemId, :quantity => 7})
|
|
107
|
-
cart.
|
|
108
|
-
=> [<#Hashie::
|
|
110
|
+
cart.saved_for_later_items.saved_for_later_item
|
|
111
|
+
=> [<#Hashie::Rash ASIN="1430218150" CartItemId="U3G241HVLLB8N6" ... >]
|
|
109
112
|
|
|
110
113
|
It's also possible to access browse nodes:
|
|
111
114
|
|
|
112
115
|
client = ASIN::Client.instance
|
|
113
116
|
|
|
114
117
|
# create a cart with an item
|
|
115
|
-
node = client.browse_node('
|
|
116
|
-
node.
|
|
118
|
+
node = client.browse_node('17', :ResponseGroup => :TopSellers)
|
|
119
|
+
node.first.browse_node_id
|
|
117
120
|
=> '163357'
|
|
118
|
-
node.name
|
|
119
|
-
=> '
|
|
121
|
+
node.first.name
|
|
122
|
+
=> 'Literature & Fiction'
|
|
120
123
|
|
|
121
|
-
## Response Configuration
|
|
122
124
|
|
|
123
|
-
ASIN is customizable in the way it returns Responses from Amazon.
|
|
124
|
-
By default it will return *SimpleItem*, *SimpleCart* or *SimpleNode* instances,
|
|
125
|
-
but you can override this behavior for using your custom Classes:
|
|
126
|
-
|
|
127
|
-
client.configure :item_type => YourItemClass
|
|
128
|
-
client.configure :cart_type => YourCartClass
|
|
129
|
-
client.configure :node_type => YourNodeClass
|
|
130
|
-
|
|
131
|
-
You can also use built-in *:raw*, *:mash* types.
|
|
132
125
|
## HTTPI
|
|
133
126
|
|
|
134
127
|
ASIN uses [HTTPI](https://github.com/rubiii/httpi) as a HTTP-Client adapter.
|
|
@@ -137,11 +130,13 @@ As a default HTTPI uses _httpclient_ so you should add that dependency to your p
|
|
|
137
130
|
|
|
138
131
|
gem 'httpclient'
|
|
139
132
|
|
|
133
|
+
|
|
140
134
|
## Confiture
|
|
141
135
|
|
|
142
136
|
ASIN uses [Confiture](https://github.com/phoet/confiture) as a Configuration gem.
|
|
143
137
|
See the Confiture documentation for different configuration styles.
|
|
144
138
|
|
|
139
|
+
|
|
145
140
|
## License
|
|
146
141
|
|
|
147
142
|
"THE BEER-WARE LICENSE" (Revision 42):
|
data/asin.gemspec
CHANGED
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
|
20
20
|
|
|
21
21
|
s.add_dependency('crack', '>= 0.3')
|
|
22
22
|
s.add_dependency('hashie', '>= 1.1')
|
|
23
|
+
s.add_dependency('rash', '>= 0.4')
|
|
23
24
|
s.add_dependency('httpi', '>= 0.9')
|
|
24
25
|
s.add_dependency('confiture', '>= 0.1')
|
|
25
26
|
|
|
@@ -31,5 +32,4 @@ Gem::Specification.new do |s|
|
|
|
31
32
|
s.add_development_dependency('vcr', '~> 2.2.5')
|
|
32
33
|
s.add_development_dependency('webmock', '~> 1.8.7')
|
|
33
34
|
s.add_development_dependency('rspec', '~> 2.11.0')
|
|
34
|
-
s.add_development_dependency('pry', '~> 0.9.9')
|
|
35
35
|
end
|
data/lib/asin.rb
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
module ASIN
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
autoload :Version, 'asin/version'
|
|
7
|
-
autoload :Configuration, 'asin/configuration'
|
|
8
|
-
end
|
|
2
|
+
require 'asin/client'
|
|
3
|
+
require 'asin/version'
|
|
4
|
+
require 'asin/configuration'
|
|
5
|
+
end
|
data/lib/asin/adapter.rb
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
module ASIN
|
|
2
|
+
module Adapter
|
|
3
|
+
def handle_type(data, type)
|
|
4
|
+
Hashie::Rash.new(data).tap do |rash|
|
|
5
|
+
rash.instance_eval do
|
|
6
|
+
case type
|
|
7
|
+
when :cart
|
|
8
|
+
def url
|
|
9
|
+
purchase_url
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def price
|
|
13
|
+
sub_total.formatted_price
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def items
|
|
17
|
+
return [] unless cart_items
|
|
18
|
+
cart_items.cart_item.is_a?(Array) ? cart_items.cart_item : [cart_items.cart_item]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def saved_items
|
|
22
|
+
return [] unless saved_for_later_items
|
|
23
|
+
saved_for_later_items.saved_for_later_item.is_a?(Array) ? saved_for_later_items.saved_for_later_item : [saved_for_later_items.saved_for_later_item]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def valid?
|
|
27
|
+
request.is_valid == 'True'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def empty?
|
|
31
|
+
cart_items.nil?
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
when :item
|
|
35
|
+
def title
|
|
36
|
+
item_attributes!.title
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def amount
|
|
40
|
+
item_attributes!.list_price!.amount.to_i
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def details_url
|
|
44
|
+
detail_page_url
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def review
|
|
48
|
+
editorial_reviews!.editorial_review!.content
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def image_url
|
|
52
|
+
large_image!.url
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def review
|
|
56
|
+
EditorialReviews!.EditorialReview!.Content
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def image_url
|
|
60
|
+
LargeImage!.URL
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# <ItemAttributes>
|
|
64
|
+
def author
|
|
65
|
+
item_attributes!.author
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def binding
|
|
69
|
+
item_attributes!.binding
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def brand
|
|
73
|
+
item_attributes!.brand
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def ean
|
|
77
|
+
item_attributes!.ean
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def edition
|
|
81
|
+
item_attributes!.edition
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def isbn
|
|
85
|
+
item_attributes!.isbn
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def item_dimensions
|
|
89
|
+
item_attributes!.item_dimensions
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# hundredths of an inch
|
|
93
|
+
def item_height
|
|
94
|
+
item_attributes!.item_dimensions.height
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# hundredths of an inch
|
|
98
|
+
def item_length
|
|
99
|
+
item_attributes!.item_dimensions[:length]
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# hundredths of an inch
|
|
103
|
+
def item_width
|
|
104
|
+
item_attributes!.item_dimensions.width
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# hundredths of a pound
|
|
108
|
+
def item_weight
|
|
109
|
+
item_attributes!.item_dimensions.weight
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def package_dimensions
|
|
113
|
+
item_attributes!.package_dimensions
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# hundredths of an inch
|
|
117
|
+
def package_height
|
|
118
|
+
item_attributes!.package_dimensions.height
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# hundredths of an inch
|
|
122
|
+
def package_length
|
|
123
|
+
item_attributes!.package_dimensions[:length]
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# hundredths of an inch
|
|
127
|
+
def package_width
|
|
128
|
+
item_attributes!.package_dimensions.width
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# hundredths of a pound
|
|
132
|
+
def package_weight
|
|
133
|
+
item_attributes!.package_dimensions.weight
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def label
|
|
137
|
+
item_attributes!.label
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def language
|
|
141
|
+
item_attributes!.languages.language.first.name
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def formatted_price
|
|
145
|
+
item_attributes!.list_price.formatted_price
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def manufacturer
|
|
149
|
+
item_attributes!.manufacturer
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def mpn
|
|
153
|
+
item_attributes!.mpn
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def page_count
|
|
157
|
+
item_attributes!.number_of_pages
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def part_number
|
|
161
|
+
item_attributes!.part_number
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def product_group
|
|
165
|
+
item_attributes!.product_group
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def publication_date
|
|
169
|
+
item_attributes!.publication_date
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def publisher
|
|
173
|
+
item_attributes!.publisher
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def sku
|
|
177
|
+
item_attributes!.sku
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def studio
|
|
181
|
+
item_attributes!.studio
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def total_new
|
|
185
|
+
offer_summary!.total_new
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def total_used
|
|
189
|
+
offer_summary!.total_used
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
when :node
|
|
193
|
+
def node_id
|
|
194
|
+
browse_node_id
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def children
|
|
198
|
+
return [] unless children
|
|
199
|
+
children.browse_node.is_a?(Array) ? children.browse_node : [children.browse_node]
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def ancestors
|
|
203
|
+
return [] unless ancestors
|
|
204
|
+
ancestors.browse_node.is_a?(Array) ? ancestors.browse_node : [ancestors.browse_node]
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def top_item_set
|
|
208
|
+
return [] unless top_item_set
|
|
209
|
+
top_item_set.top_item.is_a?(Array) ? top_item_set.top_item : [top_item_set.top_item]
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
module Client
|
|
218
|
+
# REM (ps) this is a workaround for jruby, because they don't support Module.prepend https://github.com/jruby/jruby/issues/751
|
|
219
|
+
remove_method :handle_type
|
|
220
|
+
include ASIN::Adapter
|
|
221
|
+
end
|
|
222
|
+
end
|