MojoX-JSON-RPC-Service-AutoRegister

 view release on metacpan or  search on metacpan

t/basic.t  view on Meta::CPAN


#-------------------------------------------------------------------

# Define custom service
package MyService;

use Mojo::Base 'MojoX::JSON::RPC::Service::AutoRegister';

sub multiply {
    my ( $self, $tx, $dispatcher, @params ) = @_;
    my $m = 1;
    $m *= $_ for @params;

    return $m;
}

sub echo {
    my ( $self, $tx, $dispatcher, @params ) = @_;

    return $params[0];
}

sub echo_key {
    my ( $self, $tx, $dispatcher, $param ) = @_;

    return exists $param->{key} ? $param->{key} : '?';
}

sub register {
    my ( $self, $tx, $dispatcher ) = @_;
    return 'register can be used';
}

sub rpc_register {
    my ( $self, $tx, $dispatcher ) = @_;
    return 'register can be used';
}

sub _test_register {
    my ( $self, $tx, $dispatcher ) = @_;
    return 'register can be used';
}

sub suffix_register {
    my ( $self, $tx, $dispatcher ) = @_;
    return 'register can be used';
}

sub _rpcs {
    my ( $self, $tx, $dispatcher ) = @_;
    return '_rpcs can be used';
}

sub substract {
    my ( $self, $tx, $dispatcher, $res, @params ) = @_;
    $res = 0 if !defined $res;
    $res -= $_ for @params;
    return $res;
}

sub update {
    my ( $self, $tx, $dispatcher, @params ) = @_;

    # notification only

    return;
}

sub foobar {
    my ( $self, $tx, $dispatcher ) = @_;

    # notification only

    return;
}

__PACKAGE__->register_rpc_method_names(
    'multiply', 'echo',      'echo_key', 'register',
    '_rpcs',    'substract', 'update',   'foobar'
);

__PACKAGE__->register_rpc;
__PACKAGE__->register_rpc_regex(qr/^_test/);
__PACKAGE__->register_rpc_suffix("suffix");

#-------------------------------------------------------------------

# Mojolicious app for testing
package MojoxJsonRpc;

use Mojo::Base 'Mojolicious';

use MojoX::JSON::RPC::Service::AutoRegister;

# This method will run once at server start
sub startup {
    my $self = shift;

    $self->secrets( ['Testing!'] );

    # Load our test plugin
    my $svc = MojoX::JSON::RPC::Service::AutoRegister->new->register(
        'sum',
        sub {
            my @params = @_;
            my $sum    = 0;
            $sum += $_ for @params;
            return $sum;
        }
        )->register(
        'remote_address',
        sub {
            my $tx = shift;
            return $tx->remote_address;
        },
        { with_mojo_tx => 1 }
        )->register(
        'substract',
        sub {
            my $params = shift;



( run in 0.658 second using v1.01-cache-2.11-cpan-f0ff5d10edf )