Name
Web::ComposableRequest::Base - Request class core attributes and methods
Synopsis
package Web::ComposableRequest;
use Web::ComposableRequest::Util qw( merge_attributes );
use Unexpected::Types            qw( NonEmptySimpleStr );
my $_build_request_class = sub {
   my $self  = shift;
   my $base  = __PACKAGE__.'::Base';
   my $conf  = $self->config_attr or return $base;
   my $attr  = {};
   merge_attributes $attr, $conf, [ 'request_class', 'request_roles' ];
   my $class = $attr->{request_class} // $base;
   my @roles = $attr->{request_roles} // [];
   @roles > 0 or return $class;
   @roles = map { (substr $_, 0, 1 eq '+')
                ?  substr $_, 1 : __PACKAGE__."::Role::${_}" } @roles;
   return Moo::Role->create_class_with_roles( $class, @roles );
};
has 'request_class' => is => 'lazy', isa => NonEmptySimpleStr,
   builder          => $_build_request_class;
Description
Request class core attributes and methods
Configuration and Environment
Defines the following attributes;
address- 
A simple string the
REMOTE_ADDRattribute from the Plack environment base- 
A URI object reference that points to the application base
 body- 
An HTTP::Body object constructed from the current request
 content_length- 
Length in bytes of the not yet decoded body content
 content_type- 
Mime type of the body content
 host- 
A non empty simple string which is the hostname in the request. The value of "hostport" but without the port number
 hostport- 
The hostname and port number in the request
 method- 
The HTTP request method. Lower cased
 path- 
Taken from the request path, this should be the same as the
mount_pointconfiguration attribute port- 
A non zero positive integer that default to 80. The default server port
 protocol- 
A non empty simple string. The protocol used by the request e.g.
HTTP/2.0 query- 
The query parameters from the current request. A simple string beginning with
? referer- 
The
HTTP_REFERERattribute from the Plack environment remote_host- 
The
REMOTE_HOSTattribute from the Plack environment scheme- 
The HTTP protocol used in the request. Defaults to
http script- 
The request path
 tunnel_method- 
The
_methodattribute from the body of a post or from the query parameters in the event of a get request upload- 
The upload object if one was supplied in the request. Undefined otherwise
 uri- 
The URI of the current request. Does not include the query parameters
 _args- 
An array reference of the arguments supplied with the URI
 _base- 
A non empty simple string which is the base of the requested URI
 _config- 
The configuration object reference. Required
 _content- 
A decoded string of characters representing the body of the request
 _env- 
A hash reference, the Plack request environment
 _log- 
The logger code reference. Defaults to the one supplied by the Plack environment
 _params- 
A hash reference of query parameters supplied with the request URI
 
Subroutines/Methods
BUILD
Decodes the URI and query parameters
body_params
$code_ref = $req->body_params; $value = $code_ref->( 'key', $opts );
Returns a code reference which when called with a body parameter name returns the body parameter value after first scrubbing it of "dodgy" characters. Throws if the value is undefined or tainted
has_upload
$bool = $req->has_upload;
Return true if the request contains an upload, false otherwise
query_params
$code_ref = $req->query_params; $value = $code_ref->( 'key', $opts );
Returns a code reference which when called with a query parameter name returns the query parameter value after first scrubbing it of "dodgy" characters. Throws if the value is undefined or tainted
uri_for
$uri_obj = $req->uri_for( $partial_uri_path, $args, $query_params );
Prefixes $partial_uri_path with the base of the current request. Returns an absolute URI
uri_params
$code_ref = $req->uri_params; $value = $code_ref->( $index, $opts );
Returns a code reference which when called with an integer index returns the uri parameter value after first scrubbing it of "dodgy" characters. Throws if the value is undefined or tainted
If the index is -1 and the option multiple is true, returns an array reference of all the uri parameters
Diagnostics
None
Dependencies
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