package Amazon::SQS::Simple; use Carp qw( croak ); use Digest::HMAC_SHA1; use LWP::UserAgent; use MIME::Base64; use Amazon::SQS::Simple::Queue; use URI::Escape; use XML::Simple; use base qw(Exporter Amazon::SQS::Simple::Base); our $VERSION = '0.5'; our @EXPORT_OK = qw( timestamp ); sub GetQueue { my ($self, $queue_endpoint) = @_; return new Amazon::SQS::Simple::Queue( %$self, Endpoint => $queue_endpoint, ); } sub CreateQueue { my ($self, $queue_name, %params) = @_; $params{Action} = 'CreateQueue'; $params{QueueName} = $queue_name; my $href = $self->_dispatch(\%params); if ($href->{QueueUrl}) { return Amazon::SQS::Simple::Queue->new( %$self, Endpoint => $href->{QueueUrl}, ); } else { croak("Failed to create a queue: " . $response->status_line); } } sub ListQueues { my ($self, %params) = @_; $params{Action} = 'ListQueues'; my $href = $self->_dispatch(\%params, ['QueueUrl']); if ($href->{QueueUrl}) { my @result = map { new Amazon::SQS::Simple::Queue( %$self, Endpoint => $_, ) } @{$href->{QueueUrl}}; return \@result; } else { return undef; } } sub timestamp { return Amazon::SQS::Simple::Base::_timestamp(@_); } 1; __END__ =head1 NAME Amazon::SQS::Simple - OO API for accessing the Amazon Simple Queue Service =head1 SYNOPSIS use Amazon::SQS::Simple; my $access_key = 'foo'; # Your AWS Access Key ID my $secret_key = 'bar'; # Your AWS Secret Key # Create an SQS object my $sqs = new Amazon::SQS::Simple($access_key, $secret_key); # Create a new queue my $q = $sqs->CreateQueue('queue_name'); # Send a message $q->SendMessage('Hello world!'); # Retrieve a message my $msg = $q->ReceiveMessage(); print $msg->MessageBody() # Hello world! # Delete the message $q->DeleteMessage($msg->MessageId()); # Delete the queue $q->Delete(); =head1 INTRODUCTION Amazon::SQS::Simple is an OO API for the Amazon Simple Queue Service. =head1 CONSTRUCTOR =over 2 =item new($access_key, $secret_key) Constructs a new Amazon::SQS::Simple object C<$access_key> is your Amazon Web Services access key. C<$secret_key> is your Amazon Web Services secret key. If you don't have either of these credentials, visit L. =back =head1 METHODS =over 2 =item GetQueue($queue_endpoint) Gets the queue with the given endpoint. Returns a C object. (See L for details.) =item CreateQueue($queue_name, [%opts]) Creates a new queue with the given name. Returns a C object. (See L for details.) Options for CreateQueue: =over 4 =item DefaultVisibilityTimeout => SECONDS Set the default visibility timeout for this queue =back =item ListQueues([%opts]) Gets a list of all your current queues. Returns an array of C objects. (See L for details.) Options for ListQueues: =over 4 =item QueueNamePrefix => STRING Only those queues whose name begins with the specified string are returned. =back =back =head1 FUNCTIONS No functions are exported by default; if you want to use them, export them in your use line: use Amazon::SQS::Simple qw( timestamp ); =over 2 =item timestamp($seconds) Takes a time in seconds since the epoch and returns a formatted timestamp suitable for using in a Timestamp or Expires optional method parameter. =back =head1 STANDARD OPTIONS The following options can be supplied with any of the listed methods. =over 2 =item AWSAccessKeyId => STRING The AWS Access Key Id to use with the method call. If not provided, Amazon::SQS::Simple uses the value passed to the constructor. =item SecretKey => STRING The Secret Key to use with the method call. If not provided, Amazon::SQS::Simple uses the value passed to the constructor. =item Timestamp => TIMESTAMP All methods are automatically given a timestamp of the time at which they are called, but you can override this value if you need to. The value for this key should be a timestamp as returned by the Amazon::SQS::Simple::timestamp() function. You generally do not need to supply this option. =item Expires => TIMESTAMP All methods are automatically given a timestamp of the time at which they are called. You can alternatively set an expiry time by providing an Expires option. The value for this key should be a timestamp as returned by the C function. You generally do not need to supply this option. =back =head1 AUTHOR Copyright 2007 Simon Whitaker Eswhitaker@cpan.orgE This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut