Amazon-SQS-Simple

 view release on metacpan or  search on metacpan

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

        return $messages[0];
    } 
    else {
        return undef;
    }
}

sub ReceiveMessageBatch {
    my ($self, %params) = @_;
    $params{MaxNumberOfMessages} = 10;
    $self->ReceiveMessage(%params);
}

sub DeleteMessage {
    my ($self, $message, %params) = @_;
    
    # to be consistent with DeleteMessageBatch, this will now accept a message object
    my $receipt_handle;
    if (ref($message) && $message->isa('Amazon::SQS::Simple::Message')){
        $receipt_handle = $message->ReceiptHandle;
    }
    # for backward compatibility, we will still cope with a receipt handle
    else {
        $receipt_handle = $message;
    }
    $params{Action} = 'DeleteMessage';
    $params{ReceiptHandle} = $receipt_handle;
    
    my $href = $self->_dispatch(\%params);
}

sub DeleteMessageBatch {
    my ($self, $messages, %params) = @_;
    return unless @$messages;
    $params{Action} = 'DeleteMessageBatch';
    
    my $i=0;
    foreach my $msg (@$messages){
        $i++;
        if ($i>10){
            warn "Batch deletion limited to 10 messages";
            last;
        }
        
        $params{"DeleteMessageBatchRequestEntry.$i.Id"} = $msg->MessageId;
        $params{"DeleteMessageBatchRequestEntry.$i.ReceiptHandle"} = $msg->ReceiptHandle;
    }
    
    my $href = $self->_dispatch(\%params);
}

sub ChangeMessageVisibility {
    my ($self, $receipt_handle, $timeout, %params) = @_;
    
    if (!defined($timeout) || $timeout =~ /\D/ || $timeout < 0 || $timeout > 43200) {
        croak "timeout must be specified and in range 0..43200";
    }
    
    $params{Action}             = 'ChangeMessageVisibility';
    $params{ReceiptHandle}      = $receipt_handle;
    $params{VisibilityTimeout}  = $timeout;
    
    my $href = $self->_dispatch(\%params);
}

our %valid_permission_actions = map { $_ => 1 } qw(* SendMessage ReceiveMessage DeleteMessage ChangeMessageVisibility GetQueueAttributes);

sub AddPermission {
    my ($self, $label, $account_actions, %params) = @_;
    
    $params{Action} = 'AddPermission';
    $params{Label}  = $label;
    my $i = 1;
    foreach my $account_id (keys %$account_actions) {
        $account_id =~ /^\d{12}$/ or croak "Account IDs passed to AddPermission should be 12 digit AWS account numbers, no hyphens";
        my $actions = $account_actions->{$account_id};
        my @actions;
        if (UNIVERSAL::isa($actions, 'ARRAY')) {
            @actions = @$actions;
        } else {
            @actions = ($actions);
        }
        foreach my $action (@actions) {
            exists $valid_permission_actions{$action} 
                or croak "Action passed to AddPermission must be one of " 
                . join(', ', sort keys %valid_permission_actions);
            
            $params{"AWSAccountId.$i"} = $account_id;
            $params{"ActionName.$i"}   = $action;
            $i++;
        }
    }
    my $href = $self->_dispatch(\%params);
}

sub RemovePermission {
    my ($self, $label, %params) = @_;
        
    $params{Action} = 'RemovePermission';
    $params{Label}  = $label;
    my $href = $self->_dispatch(\%params);
}

sub GetAttributes {
    my ($self, %params) = @_;
    
    $params{Action} = 'GetQueueAttributes';

    my %result;
    # default to the current version
    $params{AttributeName} ||= 'All';

    my $href = $self->_dispatch(\%params, [ 'Attribute' ]);

    if ($href->{GetQueueAttributesResult}) {
        foreach my $attr (@{$href->{GetQueueAttributesResult}{Attribute}}) {
            $result{$attr->{Name}} = $attr->{Value};
        }
    }
    return \%result;
}

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.507 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )