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_ADDR
attribute 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_point
configuration 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_REFERER
attribute from the Plack environment remote_host
-
The
REMOTE_HOST
attribute from the Plack environment scheme
-
The HTTP protocol used in the request. Defaults to
http
script
-
The request path
tunnel_method
-
The
_method
attribute 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