Skip to content

Repository files navigation

amazon-ecs

amazon-ecs is a generic Ruby wrapper to access Amazon Product Advertising API.

The library wraps around Nokogiri element object. It provides an easy access to the XML response elements and attributes.

The gist is, if the API and the response schema are updated, amazon-ecs library will still work, and you only need to update the xml paths.

Installation

gem install amazon-ecs

Usage

require'amazon/ecs'# Default options:# options[:version] => "2013-08-01"# options[:service] => "AWSECommerceService"Amazon::Ecs.configuredo |options|
options[:AWS_access_key_id]='[your access key]'options[:AWS_secret_key]='[you secret key]'options[:associate_tag]='[your associate tag]'end# To replace default options# Amazon::Ecs.options = { ... }# To override default optionsres=Amazon::Ecs.item_search('ruby',{:response_group=>'Medium',:sort=>'salesrank'})# Search Amazon UKres=Amazon::Ecs.item_search('ruby',:country=>'uk')# Search all items, default search index: Booksres=Amazon::Ecs.item_search('ruby',:search_index=>'All')res.is_valid_request?res.has_error?res.error# error messageres.total_pagesres.total_resultsres.item_page# current page no if :item_page option is provided# Find elements matching 'Item' in response objectres.items.eachdo |item|
# Retrieve string value using XML pathitem.get('ASIN')item.get('ItemAttributes/Title')# Return Amazon::Element instanceitem_attributes=item.get_element('ItemAttributes')item_attributes.get('Title')item_attributes.get_unescaped('Title')# unescape HTML entitiesitem_attributes.get_array('Author')# ['Author 1', 'Author 2', ...]item_attributes.get('Author')# 'Author 1'# Return a hash object with the element names as the keysitem.get_hash('SmallImage')# {:url => ..., :width => ..., :height => ...}# Return the first matching pathitem_height=item.get_element('ItemDimensions/Height')item_height.attributes['Units']# 'hundredths-inches'# There are two ways to find elements:# 1) return an array of Amazon::Elementreviews=item.get_elements('EditorialReview')reviews.eachdo |review|
el.get('Content')end# 2) return Nokogiri::XML::NodeSet object or nil if not foundreviews=item/'EditorialReview'reviews.eachdo |review|
el=Amazon::Element.new(review)el.get('Content')endend

Other Operations

# Item lookupres=Amazon::Ecs.item_lookup("0974514055")item=res.get_element("Item")# Browse node lookupres=Amazon::Ecs.browse_node_lookup("17")nodes=res.get_elements("BrowseNode")nodes.eachdo |node|
node.get('Name')end# Similarity lookupAmazon::ECS.similarity_lookup("0974514055")# Other operationAmazon::Ecs.send_request(:operation=>'[OperationName]',:id=>123)

Refer to Amazon Product Advertising API documentation for more information on the operations and request parameters supported.

Dump and Load

res.marshal_dump# xml stringres.marshal_load(xml)

Debug

Turn on the debug mode to display API request params, full URL and XML response:

Amazon::Ecs::debug=true

Or you could also set the DEBUG_AMAZON_ECS environment variable to 1.

DEBUG_AMAZON_ECS=1 [command]

License

[The MIT License]

About

Amazon Product Advertising Ruby API

Resources

Stars

551 stars

Watchers

18 watching

Forks

Releases

Packages

Used by

Contributors

Languages