The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Travis CI Badge Coverage Badge CPAN Badge Kwalitee Badge

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, <pjfl@cpan.org>

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