X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FApache.pm;h=5f8db714c06c914f5dc004873bdd9e2e3b0ead61;hb=d96e14c21fb544597f459aaaad969c34af7f2d1f;hp=ebc3aa169c1fdff4ec82ab6e1c63023f750943c2;hpb=b9d646b0639770fc08de91c983babc53b2a3b865;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/Apache.pm b/lib/Catalyst/Engine/Apache.pm index ebc3aa1..5f8db71 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,15 +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 ); - $c->req->server_base( $base->scheme . '://' . $base->authority . '/' ); } -=head3 prepare_request +=item $c->prepare_request($r) =cut @@ -155,7 +172,7 @@ sub prepare_request { $c->original_request($r); } -=head3 prepare_uploads +=item $c->prepare_uploads =cut @@ -171,6 +188,14 @@ sub prepare_uploads { } } +=item $c->run + +=cut + +sub run { } + +=back + =head1 SEE ALSO L.