Amazon-SQS-Simple

 view release on metacpan or  search on metacpan

lib/Amazon/SQS/Simple/Base.pm  view on Meta::CPAN

package Amazon::SQS::Simple::Base;

use strict;
use warnings;
use Carp qw( croak carp );
use Digest::SHA qw(hmac_sha256 sha256);
use LWP::UserAgent;
use MIME::Base64;
use URI::Escape;
use XML::Simple;
use HTTP::Date;
use HTTP::Request::Common;
use AWS::Signature4;
use POSIX qw(strftime);
use Encode qw(encode);
use Data::Dumper;
use Time::HiRes;
use VM::EC2::Security::CredentialCache;

use base qw(Exporter);

use constant ({ 
    SQS_VERSION_2012_11_05 => '2012-11-05',
    BASE_ENDPOINT          => 'http://sqs.us-east-1.amazonaws.com',
    DEF_MAX_GET_MSG_SIZE   => 4096, # Messages larger than this size will use a POST request.
    MAX_RETRIES            => 4,
});
                                       

our $DEFAULT_SQS_VERSION = SQS_VERSION_2012_11_05;
our @EXPORT = qw(SQS_VERSION_2012_11_05);
our $URI_SAFE_CHARACTERS = '^A-Za-z0-9-_.~'; # defined by AWS, same as URI::Escape defaults

sub new {
    my $class      = shift;
    my @args = @_;
    if (scalar(@args) >= 2 && $args[0] ne 'UseIAMRole') {
        my $access_key = shift @args;
        my $secret_key = shift @args;
        @args = (AWSAccessKeyId => $access_key,
                 SecretKey => $secret_key, @args);
    }
    my $self = {
        Endpoint         => +BASE_ENDPOINT,
        SignatureVersion => 4,
        Version          => $DEFAULT_SQS_VERSION,
        @args
    };

    if (!defined($self->{UserAgent})) {
        $self->{UserAgent} = LWP::UserAgent->new(keep_alive => 4);
    }

    if (defined($self->{Timeout})) {
        $self->{UserAgent}->timeout($self->{Timeout});
    }

    if (!defined($self->{Region})) {
        $self->{Region} = 'us-east-1';
    }

    $self->{UserAgent}->env_proxy;

    if (!$self->{UseIAMRole} && (!$self->{AWSAccessKeyId} || !$self->{SecretKey})) {
        croak "Missing AWSAccessKey or SecretKey";
    }

    $self = bless($self, $class);
    return $self;
}

sub _api_version {
    my $self = shift;
    return $self->{Version};
}



( run in 0.936 second using v1.01-cache-2.11-cpan-39bf76dae61 )