Jeff
Jeff mixes in client behaviour for Amazon Web Services (AWS) which require Signature version 2 authentication.

Usage
A minimal example:
Request = Struct.new(:aws_access_key_id, :aws_secret_access_key) do
include Jeff
def aws_endpoint; 'https://mws.amazonservices.com/Products/2011-10-01'; end
end
req = Request.new('foo', 'bar')
res = req.get(query: { 'Action' => 'GetServiceStatus' })
puts res.body.match(/Status>([^<]+)/)[1]
Vacuum provides an example implementation.