-
-use constant APACHE2 => $mod_perl::VERSION >= 1.99;
-
-if (APACHE2) {
- require Apache2;
- require Apache::RequestIO;
- require Apache::RequestRec;
- require Apache::RequestUtil;
- require APR::URI;
-}
-else { require Apache }
-require Apache::Request;
-
-sub get_request {
- my ( $self, $r ) = @_;
- $self->{ar} = Apache::Request->new($r);
-}
-
-sub parse_location {
- my $self = shift;
-
- # Reconstruct the request headers
- $self->headers_in(Maypole::Headers->new);
- my %headers;
- if (APACHE2) { %headers = %{$self->{ar}->headers_in};
- } else { %headers = $self->{ar}->headers_in; }
- for (keys %headers) {
- $self->headers_in->set($_, $headers{$_});
- }
-
- $self->{path} = $self->{ar}->uri;
- my $loc = $self->{ar}->location;
- no warnings 'uninitialized';
- $self->{path} .= '/' if $self->{path} eq $loc;
- $self->{path} =~ s/^($loc)?\///;
- $self->parse_path;
- $self->parse_args;
-}
-
-sub parse_args {
- my $self = shift;
- $self->{params} = { $self->_mod_perl_args( $self->{ar} ) };
- $self->{query} = { $self->_mod_perl_args( $self->{ar} ) };
-}
-
-sub send_output {
- my $r = shift;
- $r->{ar}->content_type(
- $r->{content_type} =~ m/^text/
- ? $r->{content_type} . "; charset=" . $r->{document_encoding}
- : $r->{content_type}
- );
- $r->{ar}->headers_out->set(
- "Content-Length" => do { use bytes; length $r->{output} }
- );
-
- foreach ($r->headers_out->field_names) {
- next if /^Content-(Type|Length)/;
- $r->{ar}->headers_out->set($_ => $r->headers_out->get($_));
+use Maypole::Constants;
+
+__PACKAGE__->mk_accessors( qw( ar ) );
+
+our $MODPERL2;
+our $modperl_version;
+
+BEGIN {
+ eval 'use Apache;';
+ if ($@) {
+ eval 'use mod_perl2; $modperl_version = $mod_perl2::VERSION; ';
+ if ($@) {
+ $modperl_version = $Apache2::RequestRec::VERSION;
+ }
+ require Apache2::RequestIO;
+ require Apache2::RequestRec;
+ require Apache2::RequestUtil;
+ require APR::URI;
+ require HTTP::Body;
+ $MODPERL2 = 1;
+ } else {
+ eval ' use mod_perl; ';
+ require Apache;
+ require Apache::Request;
+ $MODPERL2 = 0;
+ $modperl_version = 1;