amazon_pa_api 0.3.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccb8fa07ef8b4597a684d2f01a543a246f3f9a57
4
- data.tar.gz: e66b403f8ee967a51d4de8f3cf096c139e379686
3
+ metadata.gz: d8dc19602365606f6d507c26873e6f9375114ddc
4
+ data.tar.gz: 7af1dcf5608210b20cfc0d9d7e02b34eb21e8110
5
5
  SHA512:
6
- metadata.gz: ad29ba00ab9c5cd7f5fb91fe24e146cab281f1844050b2123719cdee586c3b643166d45eb1b94026a2e3eb06c477cf9a3af39712e7360caa199638755367093d
7
- data.tar.gz: f565708c1ebe243bddd581e090d069f88bad5bc6af387777991798889c7cac158838f0724cc355fc5638a640efb8909569da11e3359c49ee4520110dc19bd4bf
6
+ metadata.gz: 737b189beab8733db057ad1844dcde4548e4b6198232fac92739ebc8d214d9aca49b494a7f4307b5bc6647de570e3896827eacc4ec59fa13b7fe5f6e20d5371d
7
+ data.tar.gz: fc4245d404246d1a7618c9f46864f48acac8b41473fbc5132a6816daa4c6816d3fb45b8b6f4d0717f0504f7179e40b3a2488d512d07764062b12e8f440718acc
data/README.md CHANGED
@@ -29,27 +29,31 @@ Or install it yourself as:
29
29
  You can use easily Amazon Product Advertising API calls, like this:
30
30
 
31
31
  ```
32
+ AmazonPaApi::ItemLookup.access_key_id = "Your Amazon AWS access key id"
33
+ AmazonPaApi::ItemLookup.secret_access_key = "Your Amazon AWS secret access key"
34
+ AmazonPaApi::ItemLookup.associate_tag = "Your Amazon AWS associate tag"
35
+
32
36
  item_lookup = AmazonPaApi::ItemLookup.new('B0026IAWMU')
33
- item_lookup.access_key_id = "Your Amazon AWS access key id" # required
34
- item_lookup.secret_access_key = "Your Amazon AWS secret key" # required
35
- item_lookup.associate_tag = "Your Amazon associate tag" # required
36
-
37
37
  puts item_lookup.get.body # => XML
38
+
39
+ # credentials are handled as class variables
40
+ item_search = AmazonPaApi::ItemSearch.new('Attack on Titan', 'Books')
41
+ puts item_search.get.body # => XML
38
42
  ```
39
43
 
40
44
  Or you can set Amazon credentials as hash, like this:
41
45
 
42
46
  ```
43
- credentials = { access_key_id: "Your Amazon AWS access key id",
44
- secret_access_key: "Your Amazon AWS secret key",
45
- associate_tag: "Your Amazon associate tag"
46
- }
47
47
  item_search = AmazonPaApi::ItemSearch.new('Attack on Titan', 'Books')
48
- item_search.credentials = credentials
48
+ item_search.credentials = { access_key_id: "Your Amazon AWS access key id",
49
+ secret_access_key: "Your Amazon AWS secret key",
50
+ associate_tag: "Your Amazon associate tag"
51
+ } # required
52
+
49
53
  puts item_search.get.body # => XML
50
-
54
+
55
+ # credentials are handled as class variables
51
56
  item_lookup = AmazonPaApi::ItemLookup.new('B0026IAWMU')
52
- item_lookup.credentials = credentials
53
57
  puts item_lookup.get.body # => XML
54
58
  ```
55
59
 
@@ -62,7 +66,6 @@ If you want to choice Amazon ECommerce end point:
62
66
 
63
67
  # or like this:
64
68
  item_lookup = AmazonPaApi::ItemLookup.new('B0026IAWMU')
65
- item_lookup.credentials = credentials
66
69
  puts item_lookup.get.body # => XML
67
70
 
68
71
  item_lookup.region = :uk
@@ -83,13 +86,7 @@ You can use Amazon Product Advertising API operation's request parameters as ins
83
86
  ### ItemLookup
84
87
 
85
88
  ```
86
- credentials = { access_key_id: "Your Amazon AWS access key id",
87
- secret_access_key: "Your Amazon AWS secret key",
88
- associate_tag: "Your Amazon associate tag"
89
- }
90
-
91
89
  item_lookup = AmazonPaApi::ItemLookup.new('B0026IAWMU')
92
- item_lookup.credentials = credentials
93
90
  puts item_lookup.get.body # => XML
94
91
 
95
92
  ```
@@ -97,37 +94,21 @@ You can use Amazon Product Advertising API operation's request parameters as ins
97
94
  ### ItemSearch
98
95
 
99
96
  ```
100
- credentials = { access_key_id: "Your Amazon AWS access key id",
101
- secret_access_key: "Your Amazon AWS secret key",
102
- associate_tag: "Your Amazon associate tag"
103
- }
104
97
  item_search = AmazonPaApi::ItemSearch.new('Attack on Titan', 'Books')
105
- item_search.credentials = credentials
106
98
  puts item_search.get.body # => XML
107
99
  ```
108
100
 
109
101
  ### SimilarityLookup
110
102
 
111
103
  ```
112
- credentials = { access_key_id: "Your Amazon AWS access key id",
113
- secret_access_key: "Your Amazon AWS secret key",
114
- associate_tag: "Your Amazon associate tag"
115
- }
116
104
  similarity_lookup = AmazonPaApi::SimilarityLookup.new('B0026IAWNU')
117
- similarity_lookup.credentials = credentials
118
105
  puts similarity_lookup.get.body # => XML
119
106
  ```
120
107
 
121
108
  ### BrowseNodeLookup
122
109
 
123
110
  ```
124
- credentials = { access_key_id: "Your Amazon AWS access key id",
125
- secret_access_key: "Your Amazon AWS secret key",
126
- associate_tag: "Your Amazon associate tag"
127
- }
128
-
129
111
  browse_node_lookup = AmazonPaApi::BrowseNodeLookup(71443051)
130
- browse_node_lookup.credentials = credentials
131
112
  puts browse_node_lookup.get.body # => XML
132
113
  ```
133
114
 
@@ -139,7 +120,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
139
120
 
140
121
  ## Contributing
141
122
 
142
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/amazon_pa_api. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
123
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sakura-computer/amazon_pa_api. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
143
124
 
144
125
 
145
126
  ## License
@@ -19,7 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
+ spec.required_ruby_version = ">= 2.0.0"
23
+
22
24
  spec.add_development_dependency "bundler", "~> 1.10"
23
25
  spec.add_development_dependency "rake", "~> 10.0"
24
26
  spec.add_development_dependency "rspec", "~> 3.0"
27
+
28
+ spec.add_development_dependency "accessor_extender", "~> 1.0"
25
29
  end
@@ -1,3 +1,9 @@
1
+ require "accessor_extender"
2
+ require "net/http"
3
+ require "cgi"
4
+ require "openssl"
5
+ require "base64"
6
+
1
7
  require "amazon_pa_api/version"
2
8
  require "amazon_pa_api/extensions"
3
9
  require "amazon_pa_api/operations/item_lookup"
@@ -5,7 +11,3 @@ require "amazon_pa_api/operations/item_search"
5
11
  require "amazon_pa_api/operations/similarity_lookup"
6
12
  require "amazon_pa_api/operations/browse_node_lookup"
7
13
 
8
- require "net/http"
9
- require "cgi"
10
- require "openssl"
11
- require "base64"
@@ -8,7 +8,7 @@ module AmazonPaApi
8
8
 
9
9
  # PA api requires thease credentials.
10
10
  # String - You must to set thease before performing operations.
11
- attr_accessor :access_key_id, :secret_access_key, :associate_tag
11
+ cattr_accessor :access_key_id, :secret_access_key, :associate_tag
12
12
 
13
13
  # Subclass set this variables at initialize.
14
14
  # String - The name of operation you want to perform.
@@ -19,7 +19,7 @@ module AmazonPaApi
19
19
  # default is jp.
20
20
  attr_accessor :region
21
21
 
22
- # You can get PA api response via thease.
22
+ # You can get PA api response via these.
23
23
  attr_reader :header, :body
24
24
 
25
25
  API_VERSION = "2010-09-01".freeze
@@ -51,11 +51,11 @@ module AmazonPaApi
51
51
  secret_access_key: '',
52
52
  associate_tag:''
53
53
  )
54
- self.access_key_id = access_key_id
55
- self.secret_access_key = secret_access_key
56
- self.associate_tag = associate_tag
54
+ self.class.access_key_id = access_key_id
55
+ self.class.secret_access_key = secret_access_key
56
+ self.class.associate_tag = associate_tag
57
57
  end
58
-
58
+
59
59
  protected
60
60
 
61
61
  # It set instance variable from defined request parameters in subclass.
@@ -72,18 +72,18 @@ module AmazonPaApi
72
72
  parameters ={
73
73
  "Service" => "AWSECommerceService",
74
74
  "Timestamp" => Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
75
- "AWSAccessKeyId" => self.access_key_id.to_s,
76
- "AssociateTag" => self.associate_tag.to_s,
75
+ "AWSAccessKeyId" => Operation.access_key_id.to_s,
76
+ "AssociateTag" => Operation.associate_tag.to_s,
77
77
  "Operation" => self.operation,
78
78
  "Version" => API_VERSION,
79
- }.merge!(params)
79
+ }.merge!(params)
80
80
  end
81
81
 
82
- # It sort and set all query parameters as hash.
82
+ # It sort and set all query parameters as string.
83
83
  def request_params_string
84
84
  request_params.sort.inject('') do |params_string, (k,v)|
85
85
  params_string += '&' unless params_string.size == 0
86
- params_string += "#{k.to_s}=#{CGI.escape(v.to_s)}"
86
+ params_string += "#{k.to_s}=#{CGI.escape(v.to_s).gsub('+', '%20')}"
87
87
  params_string
88
88
  end
89
89
  end
@@ -94,7 +94,7 @@ module AmazonPaApi
94
94
  # URI - To Amazon AWS ECommerce Service.
95
95
  def add_signature(unsigned_uri)
96
96
  signature = OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new("sha256"),
97
- self.secret_access_key,
97
+ Operation.secret_access_key.to_s,
98
98
  "GET\n#{unsigned_uri.host}\n#{unsigned_uri.path}\n#{unsigned_uri.query}"
99
99
  )
100
100
  signature = [signature].pack("m").chomp
@@ -105,9 +105,9 @@ module AmazonPaApi
105
105
 
106
106
  # it add signature and requests Amazon via http.
107
107
  def request
108
- if self.access_key_id.nil? ||
109
- self.secret_access_key.nil? ||
110
- self.associate_tag.nil?
108
+ if self.class.access_key_id.nil? ||
109
+ self.class.secret_access_key.nil? ||
110
+ self.class.associate_tag.nil?
111
111
  raise "PA api requires AWS credentials. Please set access_key_id, secret_access_key and associate_tag, try again."
112
112
  end
113
113
  raise "Invalid region. region: #{self.region}" unless END_POINTS.include?(self.region)
@@ -30,6 +30,9 @@ module AmazonPaApi
30
30
  else
31
31
  raise "Error connecting to Amazon. response: #{response.to_s}"
32
32
  end
33
+
34
+ rescue
35
+ response
33
36
  end
34
37
 
35
38
  end
@@ -1,3 +1,3 @@
1
1
  module AmazonPaApi
2
- VERSION = "0.3.0"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amazon_pa_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sakura-computer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-07 00:00:00.000000000 Z
11
+ date: 2015-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: accessor_extender
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
55
69
  description: The purpose of this gem is to make use of Amazon Product Advertising
56
70
  API and pull easily Amazon products information.
57
71
  email:
@@ -92,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
106
  requirements:
93
107
  - - '>='
94
108
  - !ruby/object:Gem::Version
95
- version: '0'
109
+ version: 2.0.0
96
110
  required_rubygems_version: !ruby/object:Gem::Requirement
97
111
  requirements:
98
112
  - - '>='