Class: Amazon::Ecs
- Inherits:
-
Object
- Object
- Amazon::Ecs
- Defined in:
- lib/amazon/ecs.rb
Defined Under Namespace
Classes: Response
Constant Summary collapse
- VERSION =
'2.2.12'
- SERVICE_URLS =
{ :us => 'http://ecs.amazonaws.com/onca/xml', :uk => 'http://ecs.amazonaws.co.uk/onca/xml', :ca => 'http://ecs.amazonaws.ca/onca/xml', :de => 'http://ecs.amazonaws.de/onca/xml', :jp => 'http://ecs.amazonaws.jp/onca/xml', :fr => 'http://ecs.amazonaws.fr/onca/xml', :it => 'http://webservices.amazon.it/onca/xml', :cn => 'http://webservices.amazon.cn/onca/xml', :es => 'http://webservices.amazon.es/onca/xml' }
- OPENSSL_DIGEST_SUPPORT =
OpenSSL::Digest.constants.include?( 'SHA256' ) || OpenSSL::Digest.constants.include?( :SHA256 )
- OPENSSL_DIGEST =
OpenSSL::Digest.new( 'sha256' )
- @@options =
{ :version => "2011-08-01", :service => "AWSECommerceService" }
- @@debug =
false
Class Method Summary collapse
-
.browse_node_lookup(browse_node_id, opts = {}) ⇒ Object
Search a browse node by BrowseNodeId.
- .configure {|@@options| ... } ⇒ Object
-
.debug ⇒ Object
Get debug flag.
-
.debug=(dbg) ⇒ Object
Set debug flag to true or false.
-
.item_lookup(item_id, opts = {}) ⇒ Object
Search an item by ASIN no.
-
.item_search(terms, opts = {}) ⇒ Object
Search amazon items with search terms.
-
.options ⇒ Object
Default search options.
-
.options=(opts) ⇒ Object
Set default search options.
-
.send_request(opts) ⇒ Object
Generic send request to ECS REST service.
- .validate_request(opts) ⇒ Object
Class Method Details
.browse_node_lookup(browse_node_id, opts = {}) ⇒ Object
Search a browse node by BrowseNodeId
112 113 114 115 116 117 |
# File 'lib/amazon/ecs.rb', line 112 def self.browse_node_lookup(browse_node_id, opts = {}) opts[:operation] = 'BrowseNodeLookup' opts[:browse_node_id] = browse_node_id self.send_request(opts) end |
.configure {|@@options| ... } ⇒ Object
82 83 84 85 |
# File 'lib/amazon/ecs.rb', line 82 def self.configure(&proc) raise ArgumentError, "Block is required." unless block_given? yield @@options end |
.debug ⇒ Object
Get debug flag.
73 74 75 |
# File 'lib/amazon/ecs.rb', line 73 def self.debug @@debug end |
.debug=(dbg) ⇒ Object
Set debug flag to true or false.
78 79 80 |
# File 'lib/amazon/ecs.rb', line 78 def self.debug=(dbg) @@debug = dbg end |
.item_lookup(item_id, opts = {}) ⇒ Object
Search an item by ASIN no.
104 105 106 107 108 109 |
# File 'lib/amazon/ecs.rb', line 104 def self.item_lookup(item_id, opts = {}) opts[:operation] = 'ItemLookup' opts[:item_id] = item_id self.send_request(opts) end |
.item_search(terms, opts = {}) ⇒ Object
Search amazon items with search terms. Default search index option is ‘Books’. For other search type other than keywords, please specify :type => [search type param name].
89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/amazon/ecs.rb', line 89 def self.item_search(terms, opts = {}) opts[:operation] = 'ItemSearch' opts[:search_index] = opts[:search_index] || 'Books' type = opts.delete(:type) if type opts[type.to_sym] = terms else opts[:keywords] = terms end self.send_request(opts) end |
.options ⇒ Object
Default search options
63 64 65 |
# File 'lib/amazon/ecs.rb', line 63 def self. @@options end |
.options=(opts) ⇒ Object
Set default search options
68 69 70 |
# File 'lib/amazon/ecs.rb', line 68 def self.(opts) @@options = opts end |
.send_request(opts) ⇒ Object
Generic send request to ECS REST service. You have to specify the :operation parameter.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/amazon/ecs.rb', line 120 def self.send_request(opts) # setting up backoff options for errorless and overloadless requesting # numbers taken from amazon API guidelines backoff = ExponentialBackoff.new(0.2, 30) backoff.multiplier = 2 backoff.randomize_factor = 0.25 opts = self..merge(opts) if self. # Include other required options opts[:timestamp] = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ") request_url = prepare_url(opts) log "Request URL: #{request_url}" backoff.until_success do |interval, retry_count| # quit requests after a few failed attempts Response.new(res.error) if retry_count > 6 res = Net::HTTP.get_response(URI::parse(request_url)) unless res.kind_of? Net::HTTPSuccess # raise Amazon::RequestError, "HTTP Response: #{res.code} #{res.message}" print "Failed with: #{res.code} #{res.}" end return Response.new(res.body) end end |
.validate_request(opts) ⇒ Object
151 152 153 |
# File 'lib/amazon/ecs.rb', line 151 def self.validate_request(opts) raise Amazon::RequestError, "" if opts[:associate_tag] end |