NAME Perinci::Access - Wrapper for Perinci Riap clients VERSION version 0.33 SYNOPSIS use Perinci::Access; my $pa = Perinci::Access->new; my $res; # use Perinci::Access::InProcess $res = $pa->request(call => "pl:/Mod/SubMod/func"); # ditto $res = $pa->request(call => "/Mod/SubMod/func"); # use Perinci::Access::HTTP::Client $res = $pa->request(info => "http://example.com/Sub/ModSub/func", {uri=>'/Sub/ModSub/func'}); # use Perinci::Access::Simple::Client $res = $pa->request(meta => "riap+tcp://localhost:7001/Sub/ModSub/"); # dies, unknown scheme $res = $pa->request(call => "baz://example.com/Sub/ModSub/"); DESCRIPTION This module provides a convenient wrapper to select appropriate Riap client (Perinci::Access::*) objects based on URI scheme (or lack thereof). riap://perl/Foo/Bar/ -> Perinci::Access::InProcess /Foo/Bar/ -> Perinci::Access::InProcess pl:/Foo/Bar -> Perinci::Access::InProcess http://... -> Perinci::Access::HTTP::Client https://... -> Perinci::Access::HTTP::Client riap+tcp://... -> Perinci::Access::Simple::Client riap+unix://... -> Perinci::Access::Simple::Client riap+pipe://... -> Perinci::Access::Simple::Client For more details on each scheme, please consult the appropriate module. You can customize or add supported schemes by providing class name or object to the handlers attribute (see its documentation for more details). VARIABLES $Log_Request (BOOL) Whether to log every Riap request. Default is from environment variable LOG_RIAP_REQUEST, or false. Logging is done with Log::Any at trace level. $Log_Response (BOOL) Whether to log every Riap response. Default is from environment variable LOG_RIAP_RESPONSE, or false. Logging is done with Log::Any at trace level. METHODS new(%opts) -> OBJ Create new instance. Known options: * handlers => HASH A mapping of scheme names and class names or objects. If values are class names, they will be require'd and instantiated. The default is: { riap => 'Perinci::Access::InProcess', pl => 'Perinci::Access::InProcess', http => 'Perinci::Access::HTTP::Client', https => 'Perinci::Access::HTTP::Client', 'riap+tcp' => 'Perinci::Access::Simple::Client', 'riap+unix' => 'Perinci::Access::Simple::Client', 'riap+pipe' => 'Perinci::Access::Simple::Client', } Objects can be given instead of class names. This is used if you need to pass special options when instantiating the class. * handler_args => HASH Arguments to pass to handler objects' constructors. $pa->request($action, $server_url, \%extra, \%copts) -> RESP Send Riap request to Riap server. Pass the request to the appropriate Riap client (as configured in "handlers" constructor options). RESP is the enveloped result. %extra is optional, containing Riap request keys (the "action" request key is taken from $action). %copts is optional, containing Riap-client-specific options. For example, to pass HTTP credentials to "Perinci::Access::HTTP::Client", you can do: $pa->request(call => 'http://example.com/Foo/bar', {args=>{a=>1}}, {user=>'admin', password=>'secret'}); ENVIRONMENT LOG_RIAP_REQUEST LOG_RIAP_RESPONSE SEE ALSO Perinci::Access::InProcess Perinci::Access::HTTP::Client Perinci::Access::Simple::Client AUTHOR Steven Haryanto COPYRIGHT AND LICENSE This software is copyright (c) 2013 by Steven Haryanto. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.