Name
Web::ComposableRequest - Composable request class for web frameworks
Synopsis
use Web::ComposableRequest;
# List the roles to be applied to the request object base class
my $config = {
prefix => 'my_app',
request_roles => [ 'L10N', 'Session', 'Cookie', 'JSON', 'Static' ], };
# Construct a request object factory
my $factory = Web::ComposableRequest->new( config => $config );
# Request data provided by the web framework
my $args = 'arg1/arg2/arg_3';
my $query = { mid => '123_4' };
my $cookie = 'my_app_cookie1=key1%7Eval1%2Bkey2%7Eval2; '
. 'my_app_cookie2=key3%7Eval3%2Bkey4%7Eval4';
my $input = '{ "key": "value_1" }';
my $env = { CONTENT_LENGTH => 20,
CONTENT_TYPE => 'application/json',
HTTP_COOKIE => $cookie,
HTTP_HOST => 'localhost:5000',
PATH_INFO => '/Getting-Started',
'psgi.input' => IO::String->new( $input ),
'psgix.session' => {},
};
# Construct a new request object
my $req = $factory->new_from_simple_request( {}, $args, $query, $env );
Description
Composes a request class from a base class plus a selection of applied
roles
Configuration and Environment
Defines the following attributes;
buildargs
A code reference. The default when called returns it's second
argument. It is called with the factory object reference and the
attributes for constructing the request. It is expected to return the
hash reference used to construct the request object
config
A configuration object created by passing the "config_attr" to the
constructor of the "config_class"
config_attr
Either a hash reference or an object reference or undefined.
Overrides the hard coded configuration class defaults
config_class
A non empty simple string which is the name of the base configuration
class
request_class
A non empty simple string which is the name of the base request class
Subroutines/Methods
new_from_simple_request
my $req = $factory->new_from_simple_request( $opts, $args, $query, $env );
Returns a request object representing the passed parameters. The $opts
hash reference is used to directly set attributes in the request
object. The $args parameter is either a string of arguments after the
path in the URI or an upload object reference. The $query hash
reference are the keys and values of the URI query parameters, and the
$env hash reference is the Plack environment
Diagnostics
None
Dependencies
CGI::Simple
Class::Inspector
Exporter::Tiny
HTTP::Body
HTTP::Message
JSON::MaybeXS
Moo
Subclass::Of
Try::Tiny
URI
Unexpected
Incompatibilities
There are no known incompatibilities in this module
Bugs and Limitations
There are no known bugs in this module. Please report problems to
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Web-ComposableRequest. Patches
are welcome
Acknowledgements
Larry Wall - For the Perl programming language
Author
Peter Flanigan, <
[email protected]>
License and Copyright
Copyright (c) 2017 Peter Flanigan. All rights reserved
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. See perlartistic
This program is distributed in the hope that it will be useful, but
WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE