X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FCGI.pm;h=741816e34e240ad787d9f297e232212af9290325;hb=84528885db9fca49c55d5859e275b70ec1a3ea28;hp=847209f9871ebd763a76f3035b3d682671b276e4;hpb=4f5ebacdba8bc446f80d0e8999d117d80f9d2c98;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/CGI.pm b/lib/Catalyst/Engine/CGI.pm index 847209f..741816e 100644 --- a/lib/Catalyst/Engine/CGI.pm +++ b/lib/Catalyst/Engine/CGI.pm @@ -4,7 +4,8 @@ use strict; use base 'Catalyst::Engine'; use NEXT; use URI; -use URI::Query; + +__PACKAGE__->mk_accessors( 'env' ); =head1 NAME @@ -54,6 +55,7 @@ sub finalize_headers { sub prepare_connection { my ( $self, $c ) = @_; + local(*ENV) = $self->env || \%ENV; $c->request->address( $ENV{REMOTE_ADDR} ); @@ -91,6 +93,7 @@ sub prepare_connection { sub prepare_headers { my ( $self, $c ) = @_; + local(*ENV) = $self->env || \%ENV; # Read headers from %ENV while ( my ( $header, $value ) = each %ENV ) { @@ -106,6 +109,7 @@ sub prepare_headers { sub prepare_path { my ( $self, $c ) = @_; + local(*ENV) = $self->env || \%ENV; my $scheme = $c->request->secure ? 'https' : 'http'; my $host = $ENV{HTTP_HOST} || $ENV{SERVER_NAME}; @@ -156,9 +160,23 @@ sub prepare_path { sub prepare_query_parameters { my ( $self, $c ) = @_; + local(*ENV) = $self->env || \%ENV; + + if ( $ENV{QUERY_STRING} ) { + $self->SUPER::prepare_query_parameters( $c, $ENV{QUERY_STRING} ); + } +} + +=item $self->prepare_request($c, (env => \%env)) - my $u = URI::Query->new( $ENV{QUERY_STRING} ); - $c->request->query_parameters( { $u->hash } ); +=cut + +sub prepare_request { + my ( $self, $c, %args ) = @_; + + if ( $args{env} ) { + $self->env( $args{env} ); + } } =item $self->prepare_write($c)