amazon-ecs 1.1.0 → 1.2.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 +39 -23
- data/lib/amazon/ecs.rb +2 -2
- data/test/amazon/ecs_test.rb +11 -1
- metadata +12 -18
- data/CHANGELOG +0 -46
data/README
CHANGED
@@ -17,22 +17,22 @@ instead you just need to update the element path.
|
|
17
17
|
|
18
18
|
== EXAMPLE
|
19
19
|
|
20
|
-
require
|
20
|
+
require 'amazon/ecs'
|
21
21
|
|
22
22
|
# set the default options; options will be camelized and converted to REST request parameters.
|
23
|
-
Amazon::Ecs.options = {:aWS_access_key_id =>
|
23
|
+
Amazon::Ecs.options = {:aWS_access_key_id => '[your access key]'}
|
24
24
|
|
25
25
|
# to generate signed requests include your secret key:
|
26
|
-
Amazon::Ecs.options = {:aWS_access_key_id =>
|
26
|
+
Amazon::Ecs.options = {:aWS_access_key_id => '[your developer token]', :aWS_secret_key => '[your secret access key]'}
|
27
27
|
|
28
28
|
# alternatively,
|
29
29
|
Amazon::Ecs.configure do |options|
|
30
|
-
options[:aWS_access_key_id] =
|
31
|
-
options[:aWS_secret_key] =
|
30
|
+
options[:aWS_access_key_id] = '[your access key]'
|
31
|
+
options[:aWS_secret_key] = '[you secret key]'
|
32
32
|
end
|
33
33
|
|
34
34
|
# options provided on method call will merge with the default options
|
35
|
-
res = Amazon::Ecs.item_search(
|
35
|
+
res = Amazon::Ecs.item_search('ruby', {:response_group => 'Medium', :sort => 'salesrank'})
|
36
36
|
|
37
37
|
# some common response object methods
|
38
38
|
res.is_valid_request? # return true if request is valid
|
@@ -45,31 +45,31 @@ instead you just need to update the element path.
|
|
45
45
|
# traverse through each item (Amazon::Element)
|
46
46
|
res.items.each do |item|
|
47
47
|
# retrieve string value using XML path
|
48
|
-
item.get(
|
49
|
-
item.get(
|
48
|
+
item.get('asin')
|
49
|
+
item.get('itemattributes/title')
|
50
50
|
|
51
51
|
# return Amazon::Element instance
|
52
|
-
item_attributes = item.get_element(
|
53
|
-
item_attributes.get(
|
52
|
+
item_attributes = item.get_element('itemattributes')
|
53
|
+
item_attributes.get('title')
|
54
54
|
|
55
55
|
# return first author or a string array of authors
|
56
|
-
item_attributes.get(
|
57
|
-
item_attributes.get_array(
|
56
|
+
item_attributes.get('author') # 'Author 1'
|
57
|
+
item_attributes.get_array('author') # ['Author 1', 'Author 2', ...]
|
58
58
|
|
59
59
|
# return an hash of children text values with the element names as the keys
|
60
|
-
item.get_hash(
|
60
|
+
item.get_hash('smallimage') # {:url => ..., :width => ..., :height => ...}
|
61
61
|
|
62
62
|
# return the first matching path as Amazon::Element
|
63
|
-
item_height = item.get_element(
|
63
|
+
item_height = item.get_element('itemdimensions/height')
|
64
64
|
|
65
65
|
# retrieve attributes from Amazon::Element
|
66
|
-
item_height.attributes[
|
66
|
+
item_height.attributes['units'] # 'hundredths-inches'
|
67
67
|
|
68
68
|
# return an array of Amazon::Element
|
69
|
-
authors = item.get_elements(
|
69
|
+
authors = item.get_elements('author')
|
70
70
|
|
71
71
|
# return Hpricot::Elements object or nil if not found
|
72
|
-
reviews = item/
|
72
|
+
reviews = item/'editorialreview'
|
73
73
|
|
74
74
|
# traverse through Hpricot elements
|
75
75
|
reviews.each do |review|
|
@@ -77,21 +77,37 @@ instead you just need to update the element path.
|
|
77
77
|
Amazon::Element.get_hash(review) # [:source => ..., :content ==> ...]
|
78
78
|
|
79
79
|
# Or to get unescaped HTML values
|
80
|
-
Amazon::Element.get_unescaped(review,
|
81
|
-
Amazon::Element.get_unescaped(review,
|
80
|
+
Amazon::Element.get_unescaped(review, 'source')
|
81
|
+
Amazon::Element.get_unescaped(review, 'content')
|
82
82
|
|
83
83
|
# Or this way
|
84
84
|
el = Amazon::Element.new(review)
|
85
|
-
el.get_unescaped(
|
86
|
-
el.get_unescaped(
|
85
|
+
el.get_unescaped('source')
|
86
|
+
el.get_unescaped('content')
|
87
87
|
end
|
88
88
|
end
|
89
|
+
|
90
|
+
# Extend Amazon::Ecs, replace 'other_operation' with the appropriate name
|
91
|
+
module Amazon
|
92
|
+
class Ecs
|
93
|
+
def self.other_operation(item_id, opts={})
|
94
|
+
opts[:operation] = '[other valid operation supported by Product Advertising API]'
|
95
|
+
|
96
|
+
# setting default option value
|
97
|
+
opts[:item_id] = item_id
|
98
|
+
|
99
|
+
self.send_request(opts)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
Amazon::Ecs.other_operation('[item_id]', :param1 => 'abc', :param2 => 'xyz')
|
89
105
|
|
90
106
|
Refer to Amazon Product Advertising API documentation for more information
|
91
|
-
on
|
107
|
+
on other valid operations, request parameters and the XML response output:
|
92
108
|
https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html
|
93
109
|
|
94
|
-
To get a sample of Amazon REST response
|
110
|
+
To get a sample of Amazon REST XML response output, use AWSZone.com scratch pad:
|
95
111
|
http://www.awszone.com/scratchpads/aws/ecs.us/index.aws
|
96
112
|
|
97
113
|
== SOURCE CODES
|
data/lib/amazon/ecs.rb
CHANGED
@@ -241,7 +241,7 @@ module Amazon
|
|
241
241
|
|
242
242
|
def self.url_encode(string)
|
243
243
|
string.gsub( /([^a-zA-Z0-9_.~-]+)/ ) do
|
244
|
-
'%' + $1.unpack( 'H2' * $1.
|
244
|
+
'%' + $1.unpack( 'H2' * $1.bytesize ).join( '%' ).upcase
|
245
245
|
end
|
246
246
|
end
|
247
247
|
|
@@ -379,4 +379,4 @@ module Amazon
|
|
379
379
|
elem.to_s if elem
|
380
380
|
end
|
381
381
|
end
|
382
|
-
end
|
382
|
+
end
|
data/test/amazon/ecs_test.rb
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
require './' + File.dirname(__FILE__) + '/../../lib/amazon/ecs'
|
2
7
|
|
3
8
|
class Amazon::EcsTest < Test::Unit::TestCase
|
4
9
|
|
@@ -150,4 +155,9 @@ class Amazon::EcsTest < Test::Unit::TestCase
|
|
150
155
|
item_height = item.get_element("itemdimensions/height")
|
151
156
|
assert_equal "hundredths-inches", item_height.attributes['units']
|
152
157
|
end
|
158
|
+
|
159
|
+
def test_multibyte_search
|
160
|
+
resp = Amazon::Ecs.item_search("パソコン")
|
161
|
+
assert(resp.is_valid_request?)
|
162
|
+
end
|
153
163
|
end
|
metadata
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amazon-ecs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 19
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
|
-
-
|
7
|
+
- 2
|
9
8
|
- 0
|
10
|
-
version: 1.
|
9
|
+
version: 1.2.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Herryanto Siatono
|
14
|
-
autorequire:
|
13
|
+
autorequire:
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date:
|
17
|
+
date: 2011-02-07 00:00:00 +08:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
- 4
|
@@ -41,7 +39,6 @@ dependencies:
|
|
41
39
|
requirements:
|
42
40
|
- - ">="
|
43
41
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 23
|
45
42
|
segments:
|
46
43
|
- 0
|
47
44
|
- 3
|
@@ -49,7 +46,7 @@ dependencies:
|
|
49
46
|
version: 0.3.2
|
50
47
|
type: :runtime
|
51
48
|
version_requirements: *id002
|
52
|
-
description:
|
49
|
+
description: Generic Amazon Product Advertising Ruby API
|
53
50
|
email: herryanto@gmail.com
|
54
51
|
executables: []
|
55
52
|
|
@@ -57,19 +54,18 @@ extensions: []
|
|
57
54
|
|
58
55
|
extra_rdoc_files:
|
59
56
|
- README
|
60
|
-
- CHANGELOG
|
61
57
|
files:
|
58
|
+
- README
|
62
59
|
- lib/amazon/ecs.rb
|
63
60
|
- test/amazon/ecs_test.rb
|
64
|
-
- README
|
65
|
-
- CHANGELOG
|
66
61
|
has_rdoc: true
|
67
62
|
homepage: https://github.com/jugend/amazon-ecs
|
68
63
|
licenses: []
|
69
64
|
|
70
65
|
post_install_message:
|
71
|
-
rdoc_options:
|
72
|
-
|
66
|
+
rdoc_options:
|
67
|
+
- --inline-source
|
68
|
+
- --charset=UTF-8
|
73
69
|
require_paths:
|
74
70
|
- lib
|
75
71
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -77,7 +73,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
77
73
|
requirements:
|
78
74
|
- - ">="
|
79
75
|
- !ruby/object:Gem::Version
|
80
|
-
hash: 3
|
81
76
|
segments:
|
82
77
|
- 0
|
83
78
|
version: "0"
|
@@ -86,7 +81,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
81
|
requirements:
|
87
82
|
- - ">="
|
88
83
|
- !ruby/object:Gem::Version
|
89
|
-
hash: 3
|
90
84
|
segments:
|
91
85
|
- 0
|
92
86
|
version: "0"
|
@@ -95,7 +89,7 @@ requirements: []
|
|
95
89
|
rubyforge_project:
|
96
90
|
rubygems_version: 1.3.7
|
97
91
|
signing_key:
|
98
|
-
specification_version:
|
92
|
+
specification_version: 2
|
99
93
|
summary: Generic Amazon Product Advertising Ruby API
|
100
|
-
test_files:
|
101
|
-
|
94
|
+
test_files: []
|
95
|
+
|
data/CHANGELOG
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
1.1.0 2010-11-11
|
2
|
-
----------------
|
3
|
-
* Add get_elements, get_element, and attributes instance methods in Amazon::Element
|
4
|
-
* Deprecate Amazon::Element#search_and_convert
|
5
|
-
|
6
|
-
1.0.0 2010-11-09
|
7
|
-
----------------
|
8
|
-
* Set default Amazon API version to 2010-10-01
|
9
|
-
|
10
|
-
0.5.7 2009-08-28
|
11
|
-
----------------
|
12
|
-
* Added support for to sign request using openssl with fallback on ruby-hmac
|
13
|
-
|
14
|
-
0.5.6 2009-07-21
|
15
|
-
----------------
|
16
|
-
* Update parameter value encoding to support special characters
|
17
|
-
|
18
|
-
0.5.5 2009-07-18
|
19
|
-
----------------
|
20
|
-
* Sign request
|
21
|
-
|
22
|
-
0.5.4 2008-01-02
|
23
|
-
----------------
|
24
|
-
* Add Response#error_code
|
25
|
-
|
26
|
-
0.5.3 2007-09-12
|
27
|
-
----------------
|
28
|
-
* send_request to use default options.
|
29
|
-
|
30
|
-
0.5.2 2007-09-08
|
31
|
-
----------------
|
32
|
-
* Fixed Amazon::Element.get_unescaped error when result returned for given element path is nil
|
33
|
-
|
34
|
-
0.5.1 2007-02-08
|
35
|
-
----------------
|
36
|
-
* Fixed Amazon Japan and France URL error
|
37
|
-
* Removed opts.delete(:search_index) from item_lookup, SearchIndex param is allowed
|
38
|
-
when looking for a book with IdType other than the ASIN.
|
39
|
-
* Check for defined? RAILS_DEFAULT_LOGGER to avoid exception for non-rails ruby app
|
40
|
-
* Added check for LOGGER constant if RAILS_DEFAULT_LOGGER is not defined
|
41
|
-
* Added Ecs.configure(&proc) method for easier configuration of default options
|
42
|
-
* Added Element#search_and_convert method
|
43
|
-
|
44
|
-
0.5.0 2006-09-12
|
45
|
-
----------------
|
46
|
-
Initial Release
|