
Catalyst::Plugin::JSONRPC - Dispatch JSON-RPC methods with Catalyst

# include it in plugin list
use Catalyst qw/JSONRPC/;
# Public action to redispatch
sub entrypoint : Global {
my ( $self, $c ) = @_;
$c->json_rpc;
}
# Methods with Remote attribute in the same class
sub echo : Remote {
my ( $self, $c, @args ) = @_;
return join ' ', @args;
}

Catalyst::Plugin::JSONRPC is a Catalyst plugin to add JSON-RPC methods in your controller class. It uses a same mechanism that XMLRPC plugin does and actually plays really nicely.
Call this method from a controller action to set it up as a endpoint for RPC methods in the same class.
Supported attributes:
This module uses Remote attribute, which indicates that the action can be dispatched through RPC mechanisms. You can use this Remote attribute and integrate JSON-RPC and XML-RPC together, for example:
sub xmlrpc_endpoint : Regexp('^xml-rpc$') {
my($self, $c) = @_;
$c->xmlrpc;
}
sub jsonrpc_endpoint : Regexp('^json-rpc$') {
my($self, $c) = @_;
$c->json_rpc;
}
sub add : Remote {
my($self, $c, $a, $b) = @_;
return $a + $b;
}
Now add RPC method can be called either as JSON-RPC or XML-RPC.

Six Apart, Ltd. <cpan@sixapart.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Thanks to Sebastian Riedel for his Catalyst::Plugin::XMLRPC, from which a lot of code is copied.

Catalyst::Plugin::XMLRPC, JSON, JSONRPC