Web::ComposableRequest - Composable request class for web frameworks
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 );
Composes a request class from a base class plus a selection of applied roles
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
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
None
- CGI::Simple
- Class::Inspector
- Exporter::Tiny
- HTTP::Body
- HTTP::Message
- JSON::MaybeXS
- Moo
- Subclass::Of
- Try::Tiny
- URI
- Unexpected
There are no known incompatibilities in this module
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
Larry Wall - For the Perl programming language
Peter Flanigan, <pjfl@cpan.org>
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