logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

JSON::RPC::Legacy::Server::CGI - JSON-RPC sever for CGI

Author

       Makamaka Hannyaharamitu, <makamaka[at]cpan.org>

Description

       Gets a client request.

       Parses its JSON data.

       Passes the server object and the object decoded from the JSON data to your procedure (method).

       Takes your returned value (scalar or arrayref or hashref).

       Sends a response.

       Well, you write your procedure code only.

Methods

       They are inherited from the JSON::RPC::Legacy::Server methods basically.  The below methods are
       implemented in JSON::RPC::Legacy::Server::CGI.

       new Creates new JSON::RPC::Legacy::Server::CGI object.

       retrieve_json_from_post
           retrieves a JSON request from the body in POST method.

       retrieve_json_from_get
           In  the  protocol v1.1, 'GET' request method is also allowable.  it retrieves a JSON request from the
           query string in GET method.

       response
           returns a response JSON data to a client.

       cgi returns the CGI object.

Name

       JSON::RPC::Legacy::Server::CGI - JSON-RPC sever for CGI

See Also

       JSON::RPC::Legacy::Server,

       JSON::RPC::Legacy::Procedure,

       JSON,

       <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html>,

       <http://json-rpc.org/wiki/specification>,

Synopsis

        # CGI version
        #--------------------------
        # In your CGI script
        use JSON::RPC::Legacy::Server::CGI;

        my $server = JSON::RPC::Legacy::Server::CGI->new;

        $server->dispatch('MyApp')->handle();

        # or  an array ref setting

        $server->dispatch( [qw/MyApp MyApp::Subclass/] )->handle();

        # or a hash ref setting

        $server->dispatch( {'/jsonrpc/API' => 'MyApp'} )->handle();

        #--------------------------
        # In your application class
        package MyApp;

        use base qw(JSON::RPC::Legacy::Procedure); # Perl 5.6 or more than

        sub echo : Public {    # new version style. called by clients
            # first argument is JSON::RPC::Legacy::Server object.
            return $_[1];
        }

        sub sum : Public(a:num, b:num) { # sets value into object member a, b.
            my ($s, $obj) = @_;
            # return a scalar value or a hashref or an arryaref.
            return $obj->{a} + $obj->{b};
        }

        sub a_private_method : Private {
            # ... can't be called by client
        }

        sub sum_old_style {  # old version style. taken as Public
            my ($s, @arg) = @_;
           return $arg[0] + $arg[1];
        }

See Also