amazon-ruby 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/amazon-ruby.rb +3 -5
- data/lib/amazon-ruby/client.rb +5 -9
- data/lib/amazon-ruby/exception.rb +4 -17
- data/lib/amazon-ruby/locale.rb +4 -4
- data/lib/amazon-ruby/version.rb +1 -1
- metadata +4 -4
data/lib/amazon-ruby.rb
CHANGED
@@ -8,11 +8,9 @@ require "amazon-ruby/client"
|
|
8
8
|
|
9
9
|
module AmazonRuby
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
AmazonRuby::Client.new(country, amazon_key, amazon_secret, amazon_associate_tag);
|
15
|
-
end
|
11
|
+
#Alias for AmazonRuby::Client.new
|
12
|
+
def self.new(country, amazon_key, amazon_secret, amazon_associate_tag)
|
13
|
+
AmazonRuby::Client.new(country, amazon_key, amazon_secret, amazon_associate_tag)
|
16
14
|
end
|
17
15
|
|
18
16
|
end
|
data/lib/amazon-ruby/client.rb
CHANGED
@@ -12,8 +12,8 @@ module AmazonRuby
|
|
12
12
|
API_SERVICE = 'AWSECommerceService'
|
13
13
|
|
14
14
|
def initialize(country, amazon_key, amazon_secret, amazon_associate_tag)
|
15
|
-
|
16
|
-
|
15
|
+
@locale = Locale.new(country);
|
16
|
+
@amazon_key = amazon_key
|
17
17
|
@amazon_secret = amazon_secret
|
18
18
|
@amazon_associate_tag = amazon_associate_tag
|
19
19
|
end
|
@@ -96,10 +96,6 @@ module AmazonRuby
|
|
96
96
|
|
97
97
|
#Perform request
|
98
98
|
def get(request_params)
|
99
|
-
raise KeyNotFound unless @amazon_key
|
100
|
-
raise TagNotFound unless @amazon_associate_tag
|
101
|
-
raise SecretNotFound unless @amazon_secret
|
102
|
-
|
103
99
|
#Do request
|
104
100
|
response = Net::HTTP.get_response(url(request_params))
|
105
101
|
Response.new(response)
|
@@ -112,19 +108,19 @@ module AmazonRuby
|
|
112
108
|
hmac = OpenSSL::HMAC.digest(digest, @amazon_secret, url_string)
|
113
109
|
signature = escape([hmac].pack('m').chomp)
|
114
110
|
|
115
|
-
|
111
|
+
"#{unsigned_query}&Signature=#{signature}"
|
116
112
|
end
|
117
113
|
|
118
114
|
# The Amazon URL.
|
119
115
|
def url(request_params)
|
120
116
|
combined_params = base_params.merge(request_params)
|
121
|
-
query_string = combined_params.sort.map {
|
117
|
+
query_string = combined_params.sort.map {|key, value| "#{key}=" + escape(value)}.join('&')
|
122
118
|
|
123
119
|
URI::HTTP.build(
|
124
120
|
:host => @locale.host,
|
125
121
|
:path => '/onca/xml',
|
126
122
|
:query => sign(query_string))
|
127
|
-
|
123
|
+
end
|
128
124
|
|
129
125
|
#Escape value
|
130
126
|
def escape(value)
|
@@ -1,22 +1,9 @@
|
|
1
1
|
module AmazonRuby
|
2
2
|
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
#Amazon secret not found
|
7
|
-
class SecretNotFound < ArgumentError; end
|
8
|
-
|
9
|
-
#Amazon tag not found
|
10
|
-
class TagNotFound < ArgumentError; end
|
11
|
-
|
12
|
-
#Unsupported Country
|
13
|
-
class UnsupportedCountry < ArgumentError; end
|
14
|
-
|
15
|
-
#Invalid HTTP Client
|
16
|
-
class InvalidHttpClient < ArgumentError; end
|
17
|
-
|
18
|
-
#Unsupported Feature
|
19
|
-
class UnsupportedFeature < ArgumentError; end
|
3
|
+
#Unsupported Country
|
4
|
+
class UnsupportedCountry < StandardError; end
|
20
5
|
|
6
|
+
#Unsupported Feature
|
7
|
+
class UnsupportedFeature < StandardError; end
|
21
8
|
|
22
9
|
end
|
data/lib/amazon-ruby/locale.rb
CHANGED
@@ -4,7 +4,7 @@ module AmazonRuby
|
|
4
4
|
class Locale
|
5
5
|
|
6
6
|
#Country hosts
|
7
|
-
|
7
|
+
HOSTS = {
|
8
8
|
'ca' => 'ecs.amazonaws.ca',
|
9
9
|
'cn' => 'webservices.amazon.cn',
|
10
10
|
'de' => 'ecs.amazonaws.de',
|
@@ -13,7 +13,7 @@ module AmazonRuby
|
|
13
13
|
'jp' => 'ecs.amazonaws.jp',
|
14
14
|
'us' => 'ecs.amazonaws.com',
|
15
15
|
'uk' => 'ecs.amazonaws.co.uk'
|
16
|
-
|
16
|
+
}
|
17
17
|
|
18
18
|
#Set country on initialization, raise InvalidLocale if not found
|
19
19
|
def initialize(country)
|
@@ -22,12 +22,12 @@ module AmazonRuby
|
|
22
22
|
@country = country
|
23
23
|
end
|
24
24
|
|
25
|
-
|
25
|
+
#Host
|
26
26
|
def host
|
27
27
|
@host
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
#Country
|
31
31
|
def country
|
32
32
|
@country
|
33
33
|
end
|
data/lib/amazon-ruby/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amazon-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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: 2011-12-
|
12
|
+
date: 2011-12-15 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
requirement: &
|
16
|
+
requirement: &70224015942460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '1.4'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70224015942460
|
25
25
|
description: A Ruby wrapper for the Amazon Advertising API
|
26
26
|
email:
|
27
27
|
- rhoppes@zappos.com
|