X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FApache.pm;h=aca61ad5e71bc2ec0fc9db2ff7439f1bb1775812;hb=0556eb49954590b794221ed3a033565c85dbeb32;hp=0bba6ad8666f801533a79ed12336e75534e73790;hpb=7833fdfca73ff8a03769523ec85c2343a3994360;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/Apache.pm b/lib/Catalyst/Engine/Apache.pm index 0bba6ad..aca61ad 100644 --- a/lib/Catalyst/Engine/Apache.pm +++ b/lib/Catalyst/Engine/Apache.pm @@ -9,6 +9,7 @@ use URI; # mod_perl if (MP2) { require Apache2; + require Apache::Connection; require Apache::RequestIO; require Apache::RequestRec; require Apache::SubRequest; @@ -35,23 +36,29 @@ See L. =head1 DESCRIPTION -The Apache Engine. +This is the Catalyst engine specialized for Apache (i.e. for mod_perl). -=head2 METHODS +=head1 METHODS -=head3 apache_request +=over 4 + +=item $c->apache_request Returns an C object. -=head3 original_request +=item $c->original_request Returns the original Apache request object. -=head2 OVERLOADED METHODS +=back + +=head1 OVERLOADED METHODS This class overloads some methods from C. -=head3 finalize_headers +=over 4 + +=item $c->finalize_headers =cut @@ -81,7 +88,7 @@ sub finalize_headers { return 0; } -=head3 finalize_output +=item $c->finalize_output =cut @@ -90,7 +97,17 @@ sub finalize_output { $c->original_request->print( $c->response->{output} ); } -=head3 prepare_cookies +=item $c->prepare_connection + +=cut + +sub prepare_connection { + my $c = shift; + $c->req->hostname( $c->apache_request->connection->remote_host ); + $c->req->address( $c->apache_request->connection->remote_ip ); +} + +=item $c->prepare_cookies =cut @@ -102,7 +119,7 @@ sub prepare_cookies { { Apache::Cookie->new( $c->apache_request )->fetch } ); } -=head3 prepare_headers +=item $c->prepare_headers =cut @@ -112,7 +129,7 @@ sub prepare_headers { $c->req->headers->header( %{ $c->apache_request->headers_in } ); } -=head3 prepare_parameters +=item $c->prepare_parameters =cut @@ -126,7 +143,7 @@ sub prepare_parameters { $c->req->parameters( \%args ); } -=head3 prepare_path +=item $c->prepare_path =cut @@ -137,14 +154,15 @@ sub prepare_path { no warnings 'uninitialized'; $c->req->{path} =~ s/^($loc)?\///; my $base = URI->new; - $base->scheme( $c->apache_request->protocol =~ /HTTPS/ ? 'https' : 'http' ); + $base->scheme( $ENV{HTTPS} ? 'https' : 'http' ); $base->host( $c->apache_request->hostname ); $base->port( $c->apache_request->get_server_port ); - $base->path( $c->apache_request->location ); + my $path = $c->apache_request->location; + $base->path( $path =~ /\/$/ ? $path : "$path/" ); $c->req->base( $base->as_string ); } -=head3 prepare_request +=item $c->prepare_request($r) =cut @@ -154,7 +172,7 @@ sub prepare_request { $c->original_request($r); } -=head3 prepare_uploads +=item $c->prepare_uploads =cut @@ -170,6 +188,8 @@ sub prepare_uploads { } } +=back + =head1 SEE ALSO L.