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 )