A Ruby wrapper to various Amazon Web Services (AWS) libraries, including Product Advertising and Marketplace Web Services.
Pull request Compare This branch is 145 commits behind hakanensari:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
spec
.gitignore
.travis.yml
Gemfile
LICENSE
README.md
Rakefile
vacuum.gemspec

README.md

Vacuum

[![travis] 1] 2

Vacuum is a thin Ruby wrapper to various [Amazon Web Services (AWS) APIs] 3.

![vacuum] 4

Installation

gem install vacuum

Amazon Product Advertising API

Vacuum knows the [Amazon Product Advertising API] 5 inside out.

Set up a request:

req = Vacuum.new :product_advertising

req.configure do |config|
  config.key    = 'key'
  config.secret = 'secret'
  config.tag    = 'tag'
end

Build and run a search:

req.build operation:    'ItemSearch',
          search_index: 'Books',
          keywords:     'Deleuze'
res = req.get

res.valid? or raise res.code

p res.body

Or run the same search less verbosely:

res = req.search :books, 'Deleuze'
p res.body

The response wraps a [Nokogiri] 6 document:

res.xml

And lets you drop down to any node:

res.find('Item') do |item|
  p item
end

Browse more examples [here] 7.

Amazon Marketplace Web Services API

The wrapper to the [Amazon Marketplace Web Services API] 8 is a work-in-progress.

Set up a request to the Products API:

req = Vacuum.new(:mws_products) do |config|
  config.locale      = 'US'
  config.key         = 'key'
  config.secret      = 'secret'
  config.marketplace = 'marketplace'
  config.seller      = 'seller'
end

Get the lowest offers for a single ASIN:

req.build 'Action'          => 'GetLowestOfferListingsForASIN',
          'ASINList.ASIN.1' => '0231081596'
offers = req.get.find 'GetLowestOfferListingsForASINResult'

I will at some point throw in some syntactic sugar for common operations.

Other AWS APIs

Vacuum should work with all AWS libraries, including EC2, S3, IAM, SimpleDB, SQS, SNS, SES, and ELB. Most of these already have popular Ruby implementations. If you need to implement one using Vacuum, please fork and send a pull request when done.

HTTP Client Adapters

You can use any of the alternative adapters [Faraday] 9 supports:

req.connection do |builder|
  builder.adapter :em_synchrony
end

Addendum

![vacuums] 10

Workers queuing to crawl AWS.