Amazon-SQS-Client

 view release on metacpan or  search on metacpan

lib/Amazon/SQS/Client.pm  view on Meta::CPAN

########################################################################
sub _urlencode {
########################################################################
  my ( $self, $value, $path ) = @_;

  use URI::Escape qw(uri_escape_utf8);

  my $escapepattern = '^A-Za-z0-9\-_.~';

  if ($path) {
    $escapepattern = $escapepattern . $SLASH;
  }

  return uri_escape_utf8( $value, $escapepattern );
}

#
# Computes RFC 2104-compliant HMAC signature.
#
sub _sign {
  my ( $self, $data, $key, $algorithm ) = @_;

  my $output = $EMPTY;

  if ( 'HmacSHA1' eq $algorithm ) {
    $output = hmac_sha1_base64( $data, $key );
  }
  elsif ( 'HmacSHA256' eq $algorithm ) {
    $output = hmac_sha256_base64( $data, $key );
  }
  else {
    Carp::croak('Non-supported signing method specified');
  }

  return $output . $EQUALS;
}

#
# Formats date as ISO 8601 timestamp
#
sub _getFormattedTimestamp {
  return sprintf '%04d-%02d-%02dT%02d:%02d:%02d.000Z', sub {
    ( $_[5] + 1900, $_[4] + 1, $_[3], $_[2], $_[1], $_[0] )
    }
    ->( gmtime time );
}

#
# Convert CreateQueueRequest to name value pairs
#
sub _convertCreateQueue() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'CreateQueue';

  if ( $request->isSetQueueName() ) {
    $parameters->{'QueueName'} = $request->getQueueName();
  }

  if ( $request->isSetDefaultVisibilityTimeout() ) {
    $parameters->{'DefaultVisibilityTimeout'} = $request->getDefaultVisibilityTimeout();
  }

  my $attributecreateQueueRequestList = $request->getAttribute();

  for my $attributecreateQueueRequestIndex ( 0 .. $#{$attributecreateQueueRequestList} ) {
    my $attributecreateQueueRequest = $attributecreateQueueRequestList->[$attributecreateQueueRequestIndex];
    if ( $attributecreateQueueRequest->isSetName() ) {
      $parameters->{ 'Attribute.' . ( $attributecreateQueueRequestIndex + 1 ) . '.Name' }
        = $attributecreateQueueRequest->getName();
    }

    if ( $attributecreateQueueRequest->isSetValue() ) {
      $parameters->{ 'Attribute.' . ( $attributecreateQueueRequestIndex + 1 ) . '.Value' }
        = $attributecreateQueueRequest->getValue();
    }
  }

  return $parameters;
}

#
# Convert ListQueuesRequest to name value pairs
#
sub _convertListQueues() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'ListQueues';

  if ( $request->isSetQueueNamePrefix() ) {
    $parameters->{'QueueNamePrefix'} = $request->getQueueNamePrefix();
  }
  my $attributelistQueuesRequestList = $request->getAttribute();

  for my $attributelistQueuesRequestIndex ( 0 .. $#{$attributelistQueuesRequestList} ) {
    my $attributelistQueuesRequest = $attributelistQueuesRequestList->[$attributelistQueuesRequestIndex];

    if ( $attributelistQueuesRequest->isSetName() ) {
      $parameters->{ 'Attribute.' . ( $attributelistQueuesRequestIndex + 1 ) . '.Name' }
        = $attributelistQueuesRequest->getName();
    }
    if ( $attributelistQueuesRequest->isSetValue() ) {
      $parameters->{ 'Attribute.' . ( $attributelistQueuesRequestIndex + 1 ) . '.Value' }
        = $attributelistQueuesRequest->getValue();
    }

  }

  return $parameters;
}

#
# Convert ListDeadLetterSourceQueues to name value pairs
#
sub _convertListDeadLetterSourceQueues() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'ListDeadLetterSourceQueues';

  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }

  return $parameters;
}

#
# Convert ChangeMessageVisibilityRequest to name value pairs
#
sub _convertChangeMessageVisibility() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'ChangeMessageVisibility';

  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }

  if ( $request->isSetReceiptHandle() ) {
    $parameters->{'ReceiptHandle'} = $request->getReceiptHandle();
  }

  if ( $request->isSetVisibilityTimeout() ) {
    $parameters->{'VisibilityTimeout'} = $request->getVisibilityTimeout();
  }

  my $attributechangeMessageVisibilityRequestList = $request->getAttribute();

  for
    my $attributechangeMessageVisibilityRequestIndex ( 0 .. $#{$attributechangeMessageVisibilityRequestList} ) {
    my $attributechangeMessageVisibilityRequest
      = $attributechangeMessageVisibilityRequestList->[$attributechangeMessageVisibilityRequestIndex];

    if ( $attributechangeMessageVisibilityRequest->isSetName() ) {
      $parameters->{ 'Attribute.' . ( $attributechangeMessageVisibilityRequestIndex + 1 ) . '.Name' }
        = $attributechangeMessageVisibilityRequest->getName();
    }

    if ( $attributechangeMessageVisibilityRequest->isSetValue() ) {
      $parameters->{ 'Attribute.' . ( $attributechangeMessageVisibilityRequestIndex + 1 ) . '.Value' }
        = $attributechangeMessageVisibilityRequest->getValue();
    }
  }

  return $parameters;
}

sub _convertChangeMessageVisibilityBatch() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'ChangeMessageVisibilityBatch';

  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }

  if ( $request->isSetBatchRequest() ) {
    my $batchrequestchangeMessageVisibilityRequestList = $request->getBatchRequest();

    foreach my $batchrequestEntryIndex ( 0 .. $#{$batchrequestchangeMessageVisibilityRequestList} ) {
      my $batchrequestEntry = $batchrequestchangeMessageVisibilityRequestList->[$batchrequestEntryIndex];

      if ( $batchrequestEntry->isSetId() ) {
        $parameters->{ 'ChangeMessageVisibilityBatchRequestEntry.' . ( $batchrequestEntryIndex + 1 ) . '.Id' }
          = $batchrequestEntry->getId();
      }

      if ( $batchrequestEntry->isSetReceiptHandle() ) {
        $parameters->{ 'ChangeMessageVisibilityBatchRequestEntry.'
            . ( $batchrequestEntryIndex + 1 )
            . '.ReceiptHandle' } = $batchrequestEntry->getReceiptHandle();
      }

      if ( $batchrequestEntry->isSetVisibilityTimeout() ) {
        $parameters->{ 'ChangeMessageVisibilityBatchRequestEntry.'
            . ( $batchrequestEntryIndex + 1 )
            . '.VisibilityTimeout' } = $batchrequestEntry->getVisibilityTimeout();
      }
    }
  }

  return $parameters;
}

#
# Convert DeleteMessageRequest to name value pairs
#
sub _convertDeleteMessage() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'DeleteMessage';
  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }
  if ( $request->isSetReceiptHandle() ) {
    $parameters->{ReceiptHandle} = $request->getReceiptHandle();
  }
  my $attributedeleteMessageRequestList = $request->getAttribute();
  for my $attributedeleteMessageRequestIndex ( 0 .. $#{$attributedeleteMessageRequestList} ) {
    my $attributedeleteMessageRequest
      = $attributedeleteMessageRequestList->[$attributedeleteMessageRequestIndex];
    if ( $attributedeleteMessageRequest->isSetName() ) {
      $parameters->{ 'Attribute.' . ( $attributedeleteMessageRequestIndex + 1 ) . '.Name' }
        = $attributedeleteMessageRequest->getName();
    }

    if ( $attributedeleteMessageRequest->isSetValue() ) {
      $parameters->{ 'Attribute.' . ( $attributedeleteMessageRequestIndex + 1 ) . '.Value' }
        = $attributedeleteMessageRequest->getValue();
    }

  }

  return $parameters;
}

sub _convertDeleteMessageBatch() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'DeleteMessageBatch';
  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }

  if ( $request->isSetDeleteMessageBatchRequestEntry() ) {
    my $batchrequestList = $request->getDeleteMessageBatchRequestEntry();

    foreach my $batchrequestEntryIndex ( 0 .. $#{$batchrequestList} ) {
      my $batchrequestEntry = $batchrequestList->[$batchrequestEntryIndex];

      if ( $batchrequestEntry->isSetId() ) {
        $parameters->{ 'DeleteMessageBatchRequestEntry.' . ( $batchrequestEntryIndex + 1 ) . '.Id' }
          = $batchrequestEntry->getId();
      }

lib/Amazon/SQS/Client.pm  view on Meta::CPAN


  my $parameters = {};
  $parameters->{Action} = 'DeleteQueue';

  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }
  my $attributedeleteQueueRequestList = $request->getAttribute();
  for my $attributedeleteQueueRequestIndex ( 0 .. $#{$attributedeleteQueueRequestList} ) {
    my $attributedeleteQueueRequest = $attributedeleteQueueRequestList->[$attributedeleteQueueRequestIndex];
    if ( $attributedeleteQueueRequest->isSetName() ) {
      $parameters->{ 'Attribute.' . ( $attributedeleteQueueRequestIndex + 1 ) . '.Name' }
        = $attributedeleteQueueRequest->getName();
    }
    if ( $attributedeleteQueueRequest->isSetValue() ) {
      $parameters->{ 'Attribute.' . ( $attributedeleteQueueRequestIndex + 1 ) . '.Value' }
        = $attributedeleteQueueRequest->getValue();
    }

  }

  return $parameters;
}

#
# Convert GetQueueAttributesRequest to name value pairs
#
sub _convertGetQueueAttributes() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'GetQueueAttributes';
  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }
  my $attributeNamegetQueueAttributesRequestList = $request->getAttributeName();
  for my $attributeNamegetQueueAttributesRequestIndex ( 0 .. $#{$attributeNamegetQueueAttributesRequestList} ) {
    my $attributeNamegetQueueAttributesRequest
      = $attributeNamegetQueueAttributesRequestList->[$attributeNamegetQueueAttributesRequestIndex];
    $parameters->{ 'AttributeName.' . ( $attributeNamegetQueueAttributesRequestIndex + 1 ) }
      = $attributeNamegetQueueAttributesRequest;
  }

  return $parameters;
}

#
# Convert ReceiveMessageRequest to name value pairs
#
sub _convertReceiveMessage() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'ReceiveMessage';
  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }
  if ( $request->isSetMaxNumberOfMessages() ) {
    $parameters->{MaxNumberOfMessages} = $request->getMaxNumberOfMessages();
  }
  if ( $request->isSetVisibilityTimeout() ) {
    $parameters->{VisibilityTimeout} = $request->getVisibilityTimeout();
  }

  if ( $request->isSetWaitTimeSeconds() ) {
    $parameters->{WaitTimeSeconds} = $request->getWaitTimeSeconds();
  }

  my $attributeNamereceiveMessageRequestList = $request->getAttributeName();
  for my $attributeNamereceiveMessageRequestIndex ( 0 .. $#{$attributeNamereceiveMessageRequestList} ) {
    my $attributeNamereceiveMessageRequest
      = $attributeNamereceiveMessageRequestList->[$attributeNamereceiveMessageRequestIndex];
    $parameters->{ 'AttributeName.' . ( $attributeNamereceiveMessageRequestIndex + 1 ) }
      = $attributeNamereceiveMessageRequest;
  }

  my $messageAttributeNamereceiveMessageRequestList = $request->getMessageAttributeName();
  for my $messageAttributeNamereceiveMessageRequestIndex (
    0 .. $#{$messageAttributeNamereceiveMessageRequestList} ) {
    my $messageAttributeNamereceiveMessageRequest
      = $messageAttributeNamereceiveMessageRequestList->[$messageAttributeNamereceiveMessageRequestIndex];
    $parameters->{ 'MessageAttributeName.' . ( $messageAttributeNamereceiveMessageRequestIndex + 1 ) }
      = $messageAttributeNamereceiveMessageRequest;
  }

  return $parameters;
}

#
# Convert SendMessageRequest to name value pairs
#
sub _convertSendMessage() {
  my ( $self, $request ) = @_;

  my $parameters = {};
  $parameters->{Action} = 'SendMessage';
  if ( $request->isSetQueueUrl() ) {
    $parameters->{QueueUrl} = $request->getQueueUrl();
  }

  if ( $request->isSetMessageBody() ) {
    $parameters->{MessageBody} = $request->getMessageBody();
  }

  if ( $request->isSetMessageDuplicationId() ) {
    $parameters->{MessageDuplicationId} = $request->getMessageDuplicationId();
  }

  if ( $request->isSetMessageGroupId() ) {
    $parameters->{MessageGroupId} = $request->getMessageGroupId();
  }

  if ( $request->isSetDelaySeconds() ) {
    $parameters->{DelaySeconds} = $request->getDelaySeconds();
  }

  my $attributesendMessageRequestList = $request->getMessageAttribute();
  for my $attributesendMessageRequestIndex ( 0 .. $#{$attributesendMessageRequestList} ) {
    my $attributesendMessageRequest = $attributesendMessageRequestList->[$attributesendMessageRequestIndex];

    if ( $attributesendMessageRequest->isSetName() ) {
      $parameters->{ 'MessageAttribute.' . ( $attributesendMessageRequestIndex + 1 ) . '.Name' }

lib/Amazon/SQS/Client.pm  view on Meta::CPAN

=item * ServiceURL

default: C<https://queue.amazonaws.com>

Set the ServiceUrl when you want to use a mocking service like
L<LocalStack|https://www.localstack.cloud>.

=item * UserAgent

default: LWP::UserAgent

=item * SignatureVersion

default: 2

I<Note: Signature Version 4 is supported by AWS::Signature4. If you
use the Signature 4 signing facility, make sure your ServiceURL
includes the region endpoint.  Ex:
https://sqs.us-east-1.amazonaws.com.>

=item * SecurityToken

For temporary credentials, add the security token returned from the
AWS Security Token Service.

=item * ServiceVersion

default: 2012-11-05

=item * MaxErrorRetry

default: 3

=item * credentials

An instance of a class (e.g. Amazon::Credentials) which supports the getters:

 get_aws_access_key_id
 get_aws_secret_access_key
 get_token

You are encouraged to use this option rather than sending the
credentials in the constructor.

=back

=back

=head2 createQueue

 createQueue( request )

The C<CreateQueue> action creates a new queue, or returns the URL of an
existing one.  When you request C<CreateQueue>, you provide a name for
the queue. To successfully create a new queue, you must provide a name
that is unique within the scope of your own queues. If you provide the
name of an existing queue, a new queue isnE<039>t created and an error
isnE<039>t returned. Instead, the request succeeds and the queue URL for
the existing queue is returned.

I<Exception: if you provide a value for C<DefaultVisibilityTimeout> that is
different from the value for the existing queue, you receive an error.>

See
L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryCreateQueue.html>.

Returns an C<Amazon::SQS::Model::CreateQueueResponse> object.

Throws an C<Amazon::SQS::Exception>. Use eval to catch it.

=over 5

=item request

C<request> is either a hash reference of parameters for
a C<Amazon::SQS::Model::CreateQueueRequest> object or
a C<Amazon::SQS::Model::CreateQueueRequest> object itself.

See C<Amazon::SQS::Model::CreateQueueRequest> for valid arguments.

=back

=head2 listQueues

 listQueues( request )

The ListQueues action returns a list of your queues.

Returns an C<Amazon::SQS::Model::ListQueuesResponse> object.

Throws an C<Amazon::SQS::Exception>. Use eval to catch it

See L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryListQueues.html>

=over 5

=item request

Argument either hash reference of parameters for
C<Amazon::SQS::Model::ListQueuesRequest> request or
C<Amazon::SQS::Model::ListQueuesRequest> object itself.

See C<Amazon::SQS::Model::ListQueuesRequest> for valid arguments.

=back


=head2 addPermission

 addPermission( )

Adds the specified permission(s) to a queue for the specified
principal(s). This allows for sharing access to the queue.

See L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryAddPermission.html>

Returns an C<Amazon::SQS::Model::AddPermissionResponse>.

Throws C<Amazon::SQS::Exception. Use eval to catch> it.

=over 5

lib/Amazon/SQS/Client.pm  view on Meta::CPAN


=head2 deleteMessage

 deleteMessage( request ) 

The C<DeleteMessage> action unconditionally removes the specified message
from the specified queue. Even if the message is locked by another
reader due to the visibility timeout setting, it is still deleted from
the queue.

Returns an C<Amazon::SQS::Model::DeleteMessageResponse> object.

Throws an C<Amazon::SQS::Exception>. Use eval to catch it.

See L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryDeleteMessage.html>

=over 5

=item request

c<request> is either a hash reference of parameters for
C<Amazon::SQS::Model::DeleteMessageRequest> request or
C<Amazon::SQS::Model::DeleteMessageRequest> object itself.

See C<Amazon::SQS::Model::DeleteMessageRequest> for valid arguments

=back

=head2 deleteQueue

 deleteQueue( request )

This action unconditionally deletes the queue specified by the queue
URL. Use this operation WITH CARE!  The queue is deleted even if it is
NOT empty.

Returns an C<Amazon::SQS::Model::DeleteQueueResponse>

Throws an C<Amazon::SQS::Exception>. Use eval to catch it

See L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryDeleteQueue.html>

=over 5

=item request

C<request> can either be a hash reference of parameters for
C<Amazon::SQS::Model::DeleteQueueRequest> request or
C<Amazon::SQS::Model::DeleteQueueRequest> object itself.

See C<Amazon::SQS::Model::DeleteQueueRequest> for valid arguments.

=back

=head2 getQueueAttributes

 getQueueAttributes( request )

Gets one or all attributes of a queue. Queues currently have two
attributes you can get: <ApproximateNumberOfMessages> and
C<VisibilityTimeout>.

Returns an C<Amazon::SQS::Model::GetQueueAttributesResponse> object.

Throws an C<Amazon::SQS::Exception>. Use eval to catch it.

See
L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryGetQueueAttributes.html>

=over 5

=item request

C<request> can be either a hash reference of parameters for
C<Amazon::SQS::Model::GetQueueAttributesRequest> request or
C<Amazon::SQS::Model::GetQueueAttributesRequest> object itself.

See C<Amazon::SQS::Model::GetQueueAttributesRequest> for valid arguments.

=back


=head2 removePermissions

 removePermissions( request ) 

Removes the permission with the specified statement id from the queue.

See L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryRemovePermission.html>

Returns an C<Amazon::SQS::Model::RemovePermissionResponse> object.

Throws an C<Amazon::SQS::Exception>. Use eval to catch it.

=over 5

=item request

C<request> can be either a hash reference of parameters for
C<Amazon::SQS::Model::RemovePermissionRequest> request or
C<Amazon::SQS::Model::RemovePermissionRequest object> itself.

See C<Amazon::SQS::Model::RemovePermissionRequest> for valid arguments.

=back


=head2 receiveMessage

 receiveMessage( )

Retrieves one or more messages from the specified queue.  For each
message returned, the response includes the message body; MD5 digest
of the message body; receipt handle, which is the identifier you must
provide when deleting the message; and message ID of each message.

Messages returned by this action stay in the queue until you
delete them. However, once a message is returned to a C<ReceiveMessage>
request, it is not returned on subsequent C<ReceiveMessage> requests for
the duration of the C<VisibilityTimeout>. If you do not specify a
C<VisibilityTimeout> in the request, the overall visibility timeout for
the queue is used for the returned messages.

Returns an C<Amazon::SQS::Model::ReceiveMessageResponse> object.

Throws an C<Amazon::SQS::Exception>. Use eval to catch it.

See
L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QueryReceiveMessage.html>

=over 5

=item request

C<request> can be either a hash reference of parameters for
C<Amazon::SQS::Model::ReceiveMessageRequest> request or
C<Amazon::SQS::Model::ReceiveMessageRequest> object itself.

See C<Amazon::SQS::Model::ReceiveMessageRequest> for valid arguments.

=back


=head2 sendMessage

 sendMessage( )

The C<SendMessage> action delivers a message to the specified queue.

See
L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QuerySendMessage.html>

Returns an C<Amazon::SQS::Model::SendMessageResponse>

Throws an C<Amazon::SQS::Exception. Use eval to catch> it.

=over 5

=item request

C<request> can be either hash a reference of parameters for
C<Amazon::SQS::Model::SendMessageRequest> request or
C<Amazon::SQS::Model::SendMessageRequest> object itself.

See C<Amazon::SQS::Model::SendMessageRequest> for valid arguments.

=back


=head2 setQueueAttributes

 setQueueAttributes( )

Sets an attribute of a queue. Currently, you can set only the
C<VisibilityTimeout> attribute for a queue.

Returns an C<Amazon::SQS::Model::SetQueueAttributesResponse> object.

Throws an C<Amazon::SQS::Exception>. Use eval to catch it.

See
L</http://docs.amazonwebservices.com/AWSSimpleQueueService/2009-02-01/SQSDeveloperGuide/Query_QuerySetQueueAttributes.html>

=over 5

=item request

C<request> is hash reference of parameters for
C<Amazon::SQS::Model::SetQueueAttributesRequest> request or an
C<Amazon::SQS::Model::SetQueueAttributesRequest> object itself.

See C<Amazon::SQS::Model::SetQueueAttributesRequest> for valid
arguments.

=back

=head1 SEE OTHER

L<Amazon::SQS::Simple>, L<Amazon::API>, L<Paws>

=head1 AUTHOR

Elena@AWS

Rob Lauer - <bigfoot@cpan.org>

=cut



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