X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FRequest.pm;h=87ce66a22119de587f0602f97a7b600ab2dc5927;hb=69a62684e7bf0cbd7967df4018f860b61980d4d4;hp=7c1ae96fca1be5f29ddd0eb45d479e2bf4c05843;hpb=c368f69e3b35bea9adeb69c128fcf176b7a539e4;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Request.pm b/lib/Catalyst/Request.pm index 7c1ae96..87ce66a 100644 --- a/lib/Catalyst/Request.pm +++ b/lib/Catalyst/Request.pm @@ -131,6 +131,11 @@ sub _build_body_data { } } +has _use_hash_multivalue => ( + is=>'ro', + required=>1, + default=> sub {0}); + # Amount of data to read from input on each pass our $CHUNKSIZE = 64 * 1024; @@ -212,6 +217,10 @@ sub _build_parameters { Hash::MultiValue->new($query->flatten, $body->flatten); }; + if($self->_use_hash_multivalue) { + return $self->env->{'plack.request.merged'}->clone; # We want a copy, in case your App is evil + } + # We copy, no references foreach my $name (keys %$query_parameters) { my $param = $query_parameters->{$name}; @@ -325,7 +334,9 @@ sub prepare_body_parameters { $self->prepare_body if ! $self->_has_body; return {} unless $self->_body; - return $self->_body->param; + return $self->_use_hash_multivalue ? + $self->env->{'plack.request.body'}->clone : + $self->_body->param; } sub prepare_connection {