X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FApache%2FMP2.pm;h=43c9b093e9bf96353ec00602eb5889b6d395e5b5;hb=c462faf09f20b2fca60bb9c63bf30b158760aa2c;hp=1afdfc21a9745d39469b320a13661f3d768879cb;hpb=7c655b47ea3da54671ff11bb82e21352bfa6baea;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/Apache/MP2.pm b/lib/Catalyst/Engine/Apache/MP2.pm index 1afdfc2..43c9b09 100644 --- a/lib/Catalyst/Engine/Apache/MP2.pm +++ b/lib/Catalyst/Engine/Apache/MP2.pm @@ -3,19 +3,19 @@ package Catalyst::Engine::Apache::MP2; use strict; use base 'Catalyst::Engine::Apache'; -use Apache2 (); -use Apache::Connection (); -use Apache::Const ( -compile => qw(:common) ); -use Apache::RequestIO (); -use Apache::RequestRec (); +use Apache2 (); +use Apache::Connection (); +use Apache::Const (); +use Apache::RequestIO (); +use Apache::RequestRec (); use Apache::RequestUtil (); -use Apache::Request (); -use Apache::Cookie (); -use Apache::Upload (); -use Apache::URI (); -use APR::URI (); +use Apache::Request (); +use Apache::Cookie (); +use Apache::Upload (); +use Apache::URI (); +use APR::URI (); -sub handler : method { shift->SUPER::handler(@_) } +Apache::Const->import( -compile => ':common' ); =head1 NAME @@ -35,8 +35,65 @@ This class overloads some methods from C. =over 4 +=item $c->finalize_headers + +=cut + +sub finalize_headers { + my $c = shift; + + for my $name ( $c->response->headers->header_field_names ) { + next if $name =~ /Content-Type/i; + my @values = $c->response->header($name); + $c->apache->headers_out->add( $name => $_ ) for @values; + } + + if ( $c->response->header('Set-Cookie') && $c->response->status >= 300 ) { + my @values = $c->response->header('Set-Cookie'); + $c->apache->err_headers_out->add( 'Set-Cookie' => $_ ) for @values; + } + + $c->apache->status( $c->response->status ); + $c->apache->content_type( $c->response->header('Content-Type') ); + + return 0; +} + =item $c->handler +=cut + +sub handler : method { + shift->SUPER::handler(@_); +} + +=item $c->prepare_uploads + +=cut + +sub prepare_uploads { + my $c = shift; + + my @uploads; + + for my $field ( $c->apache->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 + ); + + push( @uploads, $field, $object ); + } + } + + $c->req->_assign_values( $c->req->uploads, \@uploads ); +} + =back =head1 SEE ALSO