sub snippets { shift->captures(@_) }
has _read_position => (
- init_arg => undef,
+ # FIXME: work around Moose bug RT#75367
+ # init_arg => undef,
is => 'ro',
writer => '_set_read_position',
default => 0,
);
has _read_length => (
- init_arg => undef,
+ # FIXME: work around Moose bug RT#75367
+ # init_arg => undef,
is => 'ro',
default => sub {
my $self = shift;
is => 'rw',
required => 1,
lazy => 1,
- default => sub { {} },
+ builder => 'prepare_body_parameters',
);
has uploads => (
has parameters => (
is => 'rw',
lazy => 1,
- builder => 'prepare_parameters',
+ builder => '_build_parameters',
+ clearer => '_clear_parameters',
);
# TODO:
sub prepare_parameters {
my ( $self ) = @_;
+ $self->_clear_parameters;
+ return $self->parameters;
+}
+
- $self->prepare_body;
+
+sub _build_parameters {
+ my ( $self ) = @_;
my $parameters = {};
my $body_parameters = $self->body_parameters;
my $query_parameters = $self->query_parameters;
$parameters;
}
-before body_parameters => sub {
- my ($self) = @_;
- $self->prepare_body;
- $self->prepare_body_parameters;
-};
-
has _uploadtmp => (
is => 'ro',
predicate => '_has_uploadtmp',
sub prepare_body_parameters {
my ( $self ) = @_;
- return unless $self->_body;
+ $self->prepare_body if ! $self->_has_body;
+ return {} unless $self->_body;
- $self->{body_parameters} = $self->_body->param; # FIXME!! Recursion here.
+ return $self->_body->param;
}
sub prepare_connection {
# and provide a custom reader..
sub body {
my $self = shift;
- $self->prepare_body();
+ $self->prepare_body unless ! $self->_has_body;
croak 'body is a reader' if scalar @_;
return blessed $self->_body ? $self->_body->body : $self->_body;
}
Returns true or false, indicating whether the connection is secure
(https). Note that the URI scheme (e.g., http vs. https) must be determined
through heuristics, and therefore the reliability of $req->secure will depend
-on your server configuration. If you are serving secure pages on the standard
-SSL port (443) and/or setting the HTTPS environment variable, $req->secure
-should be valid.
+on your server configuration. If you are setting the HTTPS environment variable,
+$req->secure should be valid.
=head2 $req->captures
=head2 $self->prepare_connection()
Sets up various fields in the request like the local and remote addresses,
-request method, vhost requested etc.
+request method, hostname requested etc.
=head2 $self->prepare_parameters()
Ensures that the body has been parsed, then builds the parameters, which are
combined from those in the request and those in the body.
-This method is the builder for the 'parameters' attribute.
+If parameters have already been set will clear the parameters and build them again.
+
=head2 meta