Class: Amazon::Ecs

Inherits:
Object
  • Object
show all
Defined in:
lib/amazon/ecs.rb

Defined Under Namespace

Classes: Response

Constant Summary collapse

VERSION =
'2.5.0'
SERVICE_URLS =
{
    :us => 'http://webservices.amazon.com/onca/xml',
    :uk => 'http://webservices.amazon.co.uk/onca/xml',
    :ca => 'http://webservices.amazon.ca/onca/xml',
    :de => 'http://webservices.amazon.de/onca/xml',
    :jp => 'http://webservices.amazon.co.jp/onca/xml',
    :fr => 'http://webservices.amazon.fr/onca/xml',
    :it => 'http://webservices.amazon.it/onca/xml',
    :cn => 'http://webservices.amazon.cn/onca/xml',
    :es => 'http://webservices.amazon.es/onca/xml',
    :in => 'http://webservices.amazon.in/onca/xml',
    :br => 'http://webservices.amazon.com.br/onca/xml',
    :mx => 'http://webservices.amazon.com.mx/onca/xml'
}
OPENSSL_DIGEST_SUPPORT =
OpenSSL::Digest.constants.include?( 'SHA256' ) ||
OpenSSL::Digest.constants.include?( :SHA256 )
OPENSSL_DIGEST =
OpenSSL::Digest.new( 'sha256' )
@@options =
{
  :version => "2013-08-01",
  :service => "AWSECommerceService"
}
@@debug =
ENV['DEBUG_AMAZON_ECS'] || false

Class Method Summary collapse

Class Method Details

.browse_node_lookup(browse_node_id, opts = {}) ⇒ Object

Browse node lookup by node ID.



114
115
116
117
118
119
# File 'lib/amazon/ecs.rb', line 114

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

Yields:

Raises:

  • (ArgumentError)


84
85
86
87
# File 'lib/amazon/ecs.rb', line 84

def self.configure(&proc)
  raise ArgumentError, "Block is required." unless block_given?
  yield @@options
end

.debugObject

Get debug flag.



75
76
77
# File 'lib/amazon/ecs.rb', line 75

def self.debug
  @@debug
end

.debug=(dbg) ⇒ Object

Set debug flag to true or false.



80
81
82
# File 'lib/amazon/ecs.rb', line 80

def self.debug=(dbg)
  @@debug = dbg
end

.item_lookup(item_id, opts = {}) ⇒ Object

Search an item by ASIN no.



106
107
108
109
110
111
# File 'lib/amazon/ecs.rb', line 106

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].



91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/amazon/ecs.rb', line 91

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

.optionsObject

Default search options



65
66
67
# File 'lib/amazon/ecs.rb', line 65

def self.options
  @@options
end

.options=(opts) ⇒ Object

Set default search options



70
71
72
# File 'lib/amazon/ecs.rb', line 70

def self.options=(opts)
  @@options = opts
end

.send_request(opts) ⇒ Object

Generic send request to ECS REST service. You have to specify the :operation parameter.



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 130

def self.send_request(opts)
  opts = self.options.merge(opts) if self.options

  # 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}")

  res = Net::HTTP.get_response(URI::parse(request_url))
  log("Response:\n#{res.body}\n\n")

  ecs_res = Response.new(res.body)
  unless res.kind_of? Net::HTTPSuccess
    err_msg = "HTTP Response: #{res.code} #{res.message}"
    err_msg += " - #{ecs_res.error}" if ecs_res.error
    raise Amazon::RequestError, err_msg
  end
  ecs_res
end

.similarity_lookup(item_id, opts = {}) ⇒ Object

Similarity lookup by item ID.



122
123
124
125
126
127
# File 'lib/amazon/ecs.rb', line 122

def self.similarity_lookup(item_id, opts = {})
  opts[:operation] = 'SimilarityLookup'
  opts[:item_id] = item_id

  self.send_request(opts)
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