sub prepare_parameters {
my $c = shift;
- foreach my $key ( $c->apache->param ) {
- my @values = $c->apache->param($key);
- $c->req->parameters->{$key} = ( @values == 1 ) ? $values[0] : \@values;
- }
+ my @params;
+
+ $c->apache->param->do( sub {
+ my ( $field, $value ) = @_;
+ push( @params, $field, $value );
+ return 1;
+ });
+
+ $c->req->_assign_values( $c->req->parameters, \@params );
}
=item $c->prepare_path
sub prepare_uploads {
my $c = shift;
- my @uploads;
+ # This is a workaround for a know bug with libapreq <= 2.0.5
+ # http://svn.apache.org/viewcvs.cgi?rev=122925&view=rev
+ my @uploads;
+
for my $field ( $c->request->param ) {
for my $upload ( $c->apache->upload($field) ) {
my @uploads;
- for my $field ( $c->apache->upload ) {
+ $c->apache->upload->do( sub {
+ my ( $field, $upload ) = @_;
- for my $upload ( $c->apache->upload($field) ) {
+ my $object = Catalyst::Request::Upload->new(
+ filename => $upload->filename,
+ size => $upload->size,
+ tempname => $upload->tempname,
+ type => $upload->type
+ );
- my $object = Catalyst::Request::Upload->new(
- filename => $upload->filename,
- size => $upload->size,
- tempname => $upload->tempname,
- type => $upload->type
- );
+ push( @uploads, $field, $object );
- push( @uploads, $field, $object );
- }
- }
+ return 1;
+ });
- $c->req->_assign_values( $c->req->uploads, \@uploads );
+ $c->request->_assign_values( $c->req->uploads, \@uploads );
}
=back
my $c = shift;
my ( @params );
+
+
+ if ( $c->request->method eq 'POST' ) {
- for my $param ( $c->cgi->url_param ) {
- for my $value ( $c->cgi->url_param($param) ) {
- push ( @params, $param, $value );
+ for my $param ( $c->cgi->url_param ) {
+ for my $value ( $c->cgi->url_param($param) ) {
+ push ( @params, $param, $value );
+ }
}
}
$self->{startperl} = $Config{startperl};
$self->{scriptgen} = $Catalyst::CATALYST_SCRIPT_GEN;
$self->{author} = $self->{author} = $ENV{'AUTHOR'}
- || @{ [ getpwuid($<) ] }[6];
+ || eval { @{ [ getpwuid($<) ] }[6] } || 'A clever guy';
$self->_mk_dirs;
$self->_mk_appclass;
$self->_mk_build;
my $app = shift;
$self->{app} = $app;
$self->{author} = $self->{author} = $ENV{'AUTHOR'}
- || @{ [ getpwuid($<) ] }[6];
+ || eval { @{ [ getpwuid($<) ] }[6] } || 'A clever guy';
$self->{base} = File::Spec->catdir( $FindBin::Bin, '..' );
unless ( $_[0] =~ /^model|m|view|v|controller|c\$/i ) {
my $helper = shift;
use FindBin;
use lib "$FindBin::Bin/../../lib";
-use Test::More tests => 11;
+use Test::More tests => 19;
use Catalyst::Test 'TestApp';
use Catalyst::Request;
my $parameters = {
'a' => [qw(A b C d E f G)],
+ };
+
+ my $query = join( '&', map { 'a=' . $_ } @{ $parameters->{a} } );
+
+ ok( my $response = request("http://localhost/dump/request?$query"), 'Request' );
+ ok( $response->is_success, 'Response Successful 2xx' );
+ is( $response->content_type, 'text/plain', 'Response Content-Type' );
+ like( $response->content, qr/^bless\( .* 'Catalyst::Request' \)$/s, 'Content is a serialized Catalyst::Request' );
+ ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );
+ isa_ok( $creq, 'Catalyst::Request' );
+ is( $creq->method, 'GET', 'Catalyst::Request method' );
+ is_deeply( $creq->parameters, $parameters, 'Catalyst::Request parameters' );
+}
+
+{
+ my $creq;
+
+ my $parameters = {
+ 'a' => [qw(A b C d E f G)],
'%' => [ '%', '"', '& - &' ],
};