NAME
MojoX::JSON::RPC::Service - JSON RPC Service registration
SYNOPSIS
use MojoX::JSON::RPC::Service;
my $svc  = MojoX::JSON::RPC::Service->new;
$svc->register(
    'sum',
    sub {
        my @params = @_;
        my $sum    = 0;
        $sum += $_ for @params;
        return $sum;
    }
);
$svc->register(
    'remote_address',
    sub {
        my $tx = shift;
        return $tx->remote_address;
    },
    {
         with_mojo_tx => 1
    }
);
## Then in Mojolicious application
$self->plugin(
    'json_rpc_dispatcher',
    services => {
        '/jsonrpc'  => $svc,
    }
);
This package can also be used as a base class to make it easy to create object-oriented JSON-RPC applications:
package MyService;
use Mojo::Base 'MojoX::JSON::RPC::Service';
sub sum {
    my ($self, @params) = @_;
    my $sum    = 0;
    $sum += $_ for @params;
    return $sum;
}
__PACKAGE__->register_rpc_method_names( 'sum' );
## Then in Mojolicious application
$self->plugin(
    'json_rpc_dispatcher',
    services => {
        '/jsonrpc'  => MyService->new,
    }
);
DESCRIPTION
Register JSON-RPC service calls.
METHODS
MojoX::JSON::RPC::Service inherits all methods from Mojo::Base and implements the following new ones.
register
Register RPC methods.
$svc->register(
    'sum',
    sub {
        my @params = @_;
        my $sum    = 0;
        $sum += $_ for @params;
        return $sum;
   }
);
with_mojo_tx can be passed as options. In that case, Mojo::Transaction object will be pass as first argument of the subroutine.
$svc->register(
    'remote_address',
    sub {
        my $tx = shift;
        return $tx->remote_address;
    },
    {
         with_mojo_tx => 1
    }
);
register_rpc_method_names
Class method. Register a list of methods as JSON-RPC calls.
__PACKAGE__->register_rpc_method_names( 'sum', 'multiply' );