Fixed MP2, removed dependency of libapreq in MP engines, fixed C::E::C::APR
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / Apache / MP20 / Base.pm
diff --git a/lib/Catalyst/Engine/Apache/MP20/Base.pm b/lib/Catalyst/Engine/Apache/MP20/Base.pm
new file mode 100644 (file)
index 0000000..72b111d
--- /dev/null
@@ -0,0 +1,82 @@
+package Catalyst::Engine::Apache::MP20::Base;
+
+use strict;
+use base 'Catalyst::Engine::Apache::Base';
+
+use Apache2::Connection  ();
+use Apache2::Const       ();
+use Apache2::RequestIO   ();
+use Apache2::RequestRec  ();
+use Apache2::RequestUtil ();
+
+Apache2::Const->import( -compile => ':common' );
+
+=head1 NAME
+
+Catalyst::Engine::Apache::MP20::Base - Base class for MP 2.0 Engines
+
+=head1 SYNOPSIS
+
+See L<Catalyst>.
+
+=head1 DESCRIPTION
+
+This is a base class for MP 2.0 Engines.
+
+=head1 OVERLOADED METHODS
+
+This class overloads some methods from C<Catalyst::Engine::Apache::Base>.
+
+=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(@_);
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Catalyst>, L<Catalyst::Engine>, L<Catalyst::Engine::Apache::Base>.
+
+=head1 AUTHOR
+
+Sebastian Riedel, C<sri@cpan.org>
+Christian Hansen C<ch@ngmedia.com>
+
+=head1 COPYRIGHT
+
+This program is free software, you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut
+
+1;