AWS-SQS-Simple
view release on metacpan or search on metacpan
lib/AWS/SQS/Simple.pm view on Meta::CPAN
package AWS::SQS::Simple;
use warnings ;
use strict ;
use Carp ;
use utf8 ;
use LWP::UserAgent ;
use HTTP::Headers ;
use URI::Escape ;
use Encode qw( encode ) ;
use Digest::SHA qw(hmac_sha256 hmac_sha256_base64) ;
use Digest::HMAC_SHA1 ;
lib/AWS/SQS/Simple.pm view on Meta::CPAN
my $url_additional_str = $self->{ AWS_ACCOUNT_ID } . '/' . delete( $params->{ QUEUE_NAME } ) ;
my $sign_query = _get_signed_query( $params ) ;
my $to_escape = qr{^(?:Signature|MessageBody|ReceiptHandle)|\.\d+\.(?:MessageBody|ReceiptHandle)$} ;
foreach my $key( keys %$params ) {
next unless $key =~ m/$to_escape/ ;
next unless exists $params->{ $key } ;
my $octets = encode( 'utf-8-strict', $params->{ $key } ) ;
$params->{ $key } = escape( $octets ) ;
}
my $uri_str = join('&', map { $_ . '=' . $params->{$_} } keys %$params ) ;
my $sign_str = "GET\n".$self->{ END_POINT }."\n/" ;
$sign_str .= $url_additional_str . "/" if( $params->{ Action } ne "CreateQueue" ) ;
$sign_str .= "\n" . $sign_query ;
lib/AWS/SQS/Simple.pm view on Meta::CPAN
my $secret_access_key = $self->{ SECRET_ACCESS_KEY } ;
my $digest = encode_base64( hmac_sha256($query, $secret_access_key ),'' ) ;
return $digest ;
}
=head2 _get_signed_query
This function utf8 encodes and uri escapes the parameters passed to generate the signed string.
=cut
sub _get_signed_query {
my $params = shift ;
my $to_sign ;
for my $key( sort keys %$params ) {
$to_sign .= '&' if $to_sign ;
my $key_octets = encode('utf-8-strict', $key ) ;
my $value_octets = encode('utf-8-strict', $params->{ $key } ) ;
$to_sign .= escape( $key_octets ) . '=' . escape( $value_octets ) ;
}
return $to_sign ;
}
=head2 escape
URI escape only the characters that should be escaped, according to RFC 3986
=cut
sub escape {
my ($str) = @_;
return uri_escape_utf8( $str,'^A-Za-z0-9\-_.~' ) ;
}
=head2 _generate_timestamp
Calculate current TimeStamp
=cut
sub _generate_timestamp {
( run in 0.576 second using v1.01-cache-2.11-cpan-4d50c553e7e )