summaryrefslogtreecommitdiffstats
path: root/lib/Web/Request.pm
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-07-18 16:20:27 -0500
committerJesse Luehrs <doy@tozt.net>2012-07-18 16:20:27 -0500
commitfd116f68e645ddaf7cc63a37b57e7b1c09ff46c8 (patch)
tree4abcadb4646c0bbde2b0f8769132a346cb161261 /lib/Web/Request.pm
parent292726f51ea3d8e83c197c5de36ccbdec9a5ca86 (diff)
downloadweb-request-fd116f68e645ddaf7cc63a37b57e7b1c09ff46c8.tar.gz
web-request-fd116f68e645ddaf7cc63a37b57e7b1c09ff46c8.zip
few minor bug fixes
Diffstat (limited to 'lib/Web/Request.pm')
-rw-r--r--lib/Web/Request.pm21
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/Web/Request.pm b/lib/Web/Request.pm
index 66c9f80..fd7e6fc 100644
--- a/lib/Web/Request.pm
+++ b/lib/Web/Request.pm
@@ -1,6 +1,7 @@
package Web::Request;
use Moose;
+use Class::Load ();
use Encode ();
use HTTP::Body ();
use HTTP::Headers ();
@@ -138,6 +139,11 @@ has cookies => (
},
);
+has _http_body => (
+ is => 'rw',
+ isa => 'HTTP::Body',
+);
+
has _parsed_body => (
traits => ['Hash'],
is => 'ro',
@@ -157,7 +163,9 @@ has _parsed_body => (
}
my $body = HTTP::Body->new($ct, $cl);
+ # automatically clean up, but wait until the request object is gone
$body->cleanup(1);
+ $self->_http_body($body);
my $input = $self->_input;
@@ -221,7 +229,10 @@ has query_parameters => (
default => sub {
my $self = shift;
- my %params = $self->uri->query_form;
+ my %params = (
+ $self->uri->query_form,
+ (map { $_ => '' } $self->uri->query_keywords),
+ );
return {
map { $_ => $self->decode($params{$_}) } keys %params
};
@@ -298,7 +309,7 @@ has uploads => (
my $ret = {};
for my $key (keys %$uploads) {
my $val = $uploads->{$key};
- $ret->{$key} = ref($val)
+ $ret->{$key} = ref($val) eq 'ARRAY'
? $self->new_upload($val->[-1])
: $self->new_upload($val);
}
@@ -319,7 +330,7 @@ has all_uploads => (
my $ret = {};
for my $key (keys %$uploads) {
my $val = $uploads->{$key};
- $ret->{$key} = ref($val)
+ $ret->{$key} = ref($val) eq 'ARRAY'
? [ map { $self->new_upload($_) } @$val ]
: [ $self->new_upload($val) ];
}
@@ -336,7 +347,7 @@ has encoding => (
has _encoding_obj => (
is => 'ro',
- isa => 'Encode::Encoding',
+ isa => 'Object', # no idea what this should be
lazy => 1,
default => sub { Encode::find_encoding(shift->encoding) },
handles => ['decode', 'encode'],
@@ -362,12 +373,14 @@ sub upload_class { 'Web::Request::Upload' }
sub new_response {
my $self = shift;
+ Class::Load::load_class($self->response_class);
$self->response_class->new(@_);
}
sub new_upload {
my $self = shift;
+ Class::Load::load_class($self->upload_class);
$self->upload_class->new(@_);
}