GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Dancer::Plugin::RPC(3) User Contributed Perl Documentation Dancer::Plugin::RPC(3)

Dancer::Plugin::RPC - Configure endpoints for XMLRPC, JSONRPC and RESTRPC procedures

This module contains plugins for Dancer: Dancer::Plugin::RPC::XMLRPC, Dancer::Plugin::RPC::JSONRPC and Dancer::Plugin::RPC::RESTRPC.

This plugin exposes the new keyword "xmlrpc" that is followed by 2 arguments: the endpoint and the arguments to configure the xmlrpc-calls at this endpoint.

This plugin exposes the new keyword "jsonrpc" that is followed by 2 arguments: the endpoint and the arguments to configure the jsonrpc-calls at this endpoint.

This plugin exposes the new keyword "restrpc" that is followed by 2 arguments: the endpoint and the arguments to configure the restrpc-calls at this endpoint.

The dispatch table is build by endpoint.

publish => <config|pod|$coderef>

publish => config
The dispatch table is build from the YAML-config:

    plugins:
        'RPC::XMLRPC':
            '/endpoint1':
                'Module::Name1':
                    method1: sub1
                    method2: sub2
                'Module::Name2':
                    method3: sub3
            '/endpoint2':
                'Module::Name3':
                    method4: sub4
    

The arguments argument should be empty for this publishing type.

publish => pod
The dispatch table is build by parsing the POD for "=for xmlrpc", "=for jsonrpc" or "=for restrpc".

    =for xmlrpc <method_name> <sub_name>
    

The arguments argument must be an Arrayref with module names. The POD-directive must be in the same file as the code!

publish => $coderef
With this publishing type, you will need to build your own dispatch table and return it.

    use Dancer::RPCPlugin::DispatchItem;
    return {
        method1 => dispatch_item(
            package => 'Module::Name1',
            code => Module::Name1->can('sub1'),
        ),
        method2 => dispatch_item(
            package => 'Module::Name1',
            code    => Module::Name1->can('sub2'),
        ),
        method3 => dispatch_item(
            pacakage => 'Module::Name2',
            code     => Module::Name2->can('sub3'),
        ),
    };
    

arguments => $list

This argumument is needed for publishing type pod and must be a list of module names that contain the pod (and code).

callback => $coderef

The callback argument may contain a $coderef that does additional checks and should return a Dancer::RPCPlugin::CallbackResult object.

    $callback->($request, $method_name, @method_args);

Returns for success: "callback_success()"

Returns for failure: "callback_fail(error_code => $code, error_message => $msg)"

This is useful for eg ACL checking.

In the scope of the callback-function you will have the variable $Dancer::RPCPlugin::ROUTE_INFO, a hashref:

    local $Dancer::RPCPlugin::ROUTE_INFO = {
        plugin        => PLUGIN_NAME,
        endpoint      => $endpoint,
        rpc_method    => $method_name,
        full_path     => request->path,
        http_method   => $http_method,
    };

Other plugins may want to put extra information in there to help you decide if this request should even be honoured.

code_wrapper => $coderef

The code_wrapper argument can be used to wrap the code (from the dispatch table).

    my $wrapper = sub {
        my $code   = shift;
        my $pkg    = shift;
        my $method = shift;
        my $instance = $pkg->new();
        $instance->$code(@_);
    };

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See:

  • <http://www.perl.com/perl/misc/Artistic.html>
  • <http://www.gnu.org/copyleft/gpl.html>

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(c) MMXVI - Abe Timmerman <abeltje@cpan.org>
2020-12-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.