NAME

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

SYNOPSIS

# 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;
}

DESCRIPTION

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.

METHODS

$c->json_rpc(%attrs)

Call this method from a controller action to set it up as a endpoint for RPC methods in the same class.

Supported attributes:

class

name of class to dispatch (defaults to current one)

method

method to dispatch to (overrides JSON-RPC method name)

REMOTE ACTION ATTRIBUTE

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.

AUTHOR & LICENSE

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

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

SEE ALSO

Catalyst::Plugin::XMLRPC, JSON, JSONRPC