IO-Iron
view release on metacpan or search on metacpan
lib/IO/Iron/IronMQ/Client.pm view on Meta::CPAN
callbacks => {
'RFC 3986 reserved character check' => sub { return !IO::Iron::Common::contains_rfc_3986_res_chars(shift) },
}
}, # queue name.
'message_timeout' => { type => SCALAR, optional => 1, },
'message_expiration' => { type => SCALAR, optional => 1, },
'type' => {
type => SCALAR,
optional => 1,
regex => qr/^(?:multicast|unicast|pull)$/msx, ## no critic (Variables::ProhibitPunctuationVars)
},
'push' => { type => HASHREF, optional => 1, },
'dead_letter' => { type => HASHREF, optional => 1, },
}
);
$log->tracef( 'Entering create_queue(%s)', \%params );
assert_nonblank( $params{'name'}, 'Parameter \'name\' is a non blank string' );
my $connection = $self->{'connection'};
my %item_body;
$item_body{'message_timeout'} = $params{'message_timeout'} if ( $params{'message_timeout'} );
$item_body{'message_expiration'} = $params{'message_expiration'} if ( $params{'message_expiration'} );
$item_body{'type'} = $params{'type'} if ( $params{'type'} );
$item_body{'push'} = $params{'push'} if ( $params{'push'} );
$item_body{'dead_letter'} = $params{'dead_letter'} if ( $params{'dead_letter'} );
my ( $http_status_code, $response_message ) = $connection->perform_iron_action(
IO::Iron::IronMQ::Api::IRONMQ_CREATE_QUEUE(),
{
'{Queue Name}' => $params{'name'},
'body' => \%item_body,
}
);
$self->{'last_http_status_code'} = $http_status_code;
$log->tracef( 'Exiting create_queue: %s', undef );
return;
}
sub get_queue_info {
my $self = shift;
my %params = validate(
@_,
{
'name' => { type => SCALAR, }, # queue name.
}
);
$log->tracef( 'Entering get_queue_info(%s)', \%params );
assert_nonblank( $params{'name'}, 'Parameter \'name\' is a non blank string' );
my $connection = $self->{'connection'};
my ( $http_status_code, $response_message ) =
$connection->perform_iron_action( IO::Iron::IronMQ::Api::IRONMQ_GET_QUEUE_INFO(), { '{Queue Name}' => $params{'name'}, } );
$self->{'last_http_status_code'} = $http_status_code;
my $info = $response_message;
# {"id":"51be[...]","name":"Log_Test_Queue","size":0,"total_messages":3,"project_id":"51bd[...]"}
$log->debugf( 'Returned info about queue %s.', $params{'name'} );
$log->tracef( 'Exiting get_queue_info: %s', $info );
return $info;
}
sub update_queue {
my $self = shift;
my %params = validate(
@_,
{
'name' => {
type => SCALAR,
callbacks => {
'RFC 3986 reserved character check' => sub { return !IO::Iron::Common::contains_rfc_3986_res_chars(shift) },
}
}, # queue name.
'message_timeout' => { type => SCALAR, optional => 1, },
'message_expiration' => { type => SCALAR, optional => 1, },
'push' => { type => HASHREF, optional => 1, },
'dead_letter' => { type => HASHREF, optional => 1, },
}
);
$log->tracef( 'Entering update_queue(%s)', \%params );
assert_nonblank( $params{'name'}, 'Parameter \'name\' is a non blank string' );
my $connection = $self->{'connection'};
my %item_body;
$item_body{'message_timeout'} = $params{'message_timeout'} if ( $params{'message_timeout'} );
$item_body{'message_expiration'} = $params{'message_expiration'} if ( $params{'message_expiration'} );
$item_body{'push'} = $params{'push'} if ( $params{'push'} );
$item_body{'dead_letter'} = $params{'dead_letter'} if ( $params{'dead_letter'} );
my ( $http_status_code, $response_message ) = $connection->perform_iron_action(
IO::Iron::IronMQ::Api::IRONMQ_UPDATE_QUEUE(),
{
'{Queue Name}' => $params{'name'},
'body' => \%item_body,
}
);
$self->{'last_http_status_code'} = $http_status_code;
$log->tracef( 'Exiting update_queue: %s', undef );
return;
}
sub delete_queue {
my $self = shift;
my %params = validate(
@_,
{
'name' => {
type => SCALAR,
callbacks => {
'RFC 3986 reserved character check' => sub { return !IO::Iron::Common::contains_rfc_3986_res_chars(shift) },
'Is longer than zero characters' => sub { return length shift },
}
}, # queue name.
}
);
$log->tracef( 'Entering delete_queue(%s)', \%params );
my $connection = $self->{'connection'};
my ( $http_status_code, $response_message ) = $connection->perform_iron_action(
IO::Iron::IronMQ::Api::IRONMQ_DELETE_QUEUE(),
{
'{Queue Name}' => $params{'name'},
}
);
( run in 1.125 second using v1.01-cache-2.11-cpan-2398b32b56e )