This repository was archived by the owner on Oct 14, 2018. It is now read-only.
forked fromstipple/amazon-ecs
- Notifications
You must be signed in to change notification settings - Fork0
Generic Ruby Amazon Product Advertising API
License
NotificationsYou must be signed in to change notification settings
wrobbins/amazon-ecs
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
== amazon-ecsGeneric Product Advertising Ruby API using Nokogiri. Uses Response and Element wrapper classes for easy access to the REST API XML output.It is generic, so you can easily extend <tt>Amazon::Ecs</tt> to support other not implemented REST operations; and it is also generic because it just wraps arounda Nokogiri Node object, instead of providing one-to-one object/attributes to XML elements map.The idea is as the API evolves, there is a change in REST XML output structure, no updates will be required on <tt>amazon-ecs</tt> gem, instead you just need to update the element path. == INSTALLATION $ gem install amazon-ecsGemfilegem 'amazon-ecs', :git => 'git://github.com/wrobbins/amazon-ecs.git'== EXAMPLE require "amazon/ecs" # set the default options; options will be camelized and converted to REST request parameters. Amazon::Ecs.options = {:aWS_access_key_id => "[your access key]"} # to generate signed requests include your secret key: Amazon::Ecs.options = {:aWS_access_key_id => "[your developer token]", :aWS_secret_key => "[your secret access key]"} # alternatively, Amazon::Ecs.configure do |options| options[:aWS_access_key_id] = "[your access key]" options[:aWS_secret_key] = "[you secret key]" end # options provided on method call will merge with the default options res = Amazon::Ecs.item_search("ruby", {:response_group => "Medium", :sort => "salesrank"}) # some common response object methods res.is_valid_request? # return true if request is valid res.has_error? # return true if there is an error res.error # return error message if there is any res.total_pages # return total pages res.total_results # return total results res.item_page # return current page no if :item_page option is provided # traverse through each item (Amazon::Element) res.items.each do |item| # retrieve string value using XML path item.get("asin") item.get("itemattributes/title") # return Amazon::Element instance item_attributes = item.get_element("itemattributes") item_attributes.get("title") # return first author or a string array of authors item_attributes.get("author") # "Author 1" item_attributes.get_array("author") # ["Author 1", "Author 2", ...] # return an hash of children text values with the element names as the keys item.get_hash("smallimage") # {:url => ..., :width => ..., :height => ...} # return the first matching path as Amazon::Element item_height = item.get_element("itemdimensions/height") # retrieve attributes from Amazon::Element item_height.attributes["units"] # "hundredths-inches" # return an array of Amazon::Element authors = item.get_elements("author") # return Nokogiri::XML::NodeSet object or nil if not found reviews = item/"editorialreview" # traverse through Nokogiri Node elements reviews.each do |review| # Getting hash value out of Nokogiri element Amazon::Element.get_hash(review) # [:source => ..., :content ==> ...] # Or to get unescaped HTML values Amazon::Element.get_unescaped(review, "source") Amazon::Element.get_unescaped(review, "content") # Or this way el = Amazon::Element.new(review) el.get_unescaped("source") el.get_unescaped("content") end end # Extend Amazon::Ecs, replace 'other_operation' with the appropriate name module Amazon class Ecs def self.other_operation(item_id, opts={}) opts[:operation] = '[other valid operation supported by Product Advertising API]' # setting default option value opts[:item_id] = item_id self.send_request(opts) end end end Amazon::Ecs.other_operation("[item_id]", :param1 => "abc", :param2 => "xyz")Refer to Amazon Product Advertising API documentation for more information on other valid operations, request parameters and the XML response output:https://affiliate-program.amazon.com/gp/advertising/api/detail/main.htmlTo get a sample of Amazon REST XML response output, use AWSZone.com scratch pad:http://www.awszone.com/scratchpads/aws/ecs.us/index.aws== SOURCE CODES*http://github.com/jugend/amazon-ecs== CREDITSThanks to Dan Milne (http://da.nmilne.com/) for the signed request patch.== LICENSE(The MIT License)Copyright (c) 2010 Herryanto Siatono,http://www.siatono.com
About
Generic Ruby Amazon Product Advertising API
Resources
License
Stars
Watchers
Forks
Packages0
No packages published