Added recursive -r flag to prove example
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / CGI / APR.pm
index 93a181b..81cfb6a 100644 (file)
@@ -9,6 +9,8 @@ use APR::Request;
 use APR::Request::CGI;
 use APR::Request::Param;
 
+__PACKAGE__->mk_accessors( qw[apr pool] );
+
 =head1 NAME
 
 Catalyst::Engine::CGI::APR - The CGI APR Engine
@@ -31,7 +33,21 @@ A script using the Catalyst::Engine::CGI::APR module might look like:
 
 =head1 DESCRIPTION
 
-This Catalyst engine uses C<APR::Request> for parsing of message body.
+This Catalyst engine uses C<APR::Request::CGI> for parsing of message body.
+
+=head1 METHODS
+
+=over 4
+
+=item $c->apr
+
+Contains the C<APR::Request::CGI> object.
+
+=item $c->pool
+
+Contains the C<APR::Pool> object.
+
+=back
 
 =head1 OVERLOADED METHODS
 
@@ -47,14 +63,17 @@ sub prepare_parameters {
     my $c = shift;
 
     my @params;
-
-    $c->cgi->param->do( sub {
-        my ( $field, $value ) = @_;
-        push( @params, $field, $value );
-        return 1;    
-    });
-
-    $c->request->param(@params);
+    
+    if ( my $table = $c->apr->param ) {
+    
+        $table->do( sub {
+            my ( $field, $value ) = @_;
+            push( @params, $field, $value );
+            return 1;    
+        });
+    
+        $c->request->param(@params);
+    }
 }
 
 =item $c->prepare_request
@@ -63,7 +82,8 @@ sub prepare_parameters {
 
 sub prepare_request {
     my $c = shift;
-    $c->cgi( APR::Request::CGI->new( APR::Pool->new ) );
+    $c->pool(  APR::Pool->new );
+    $c->apr( APR::Request::CGI->handle( $c->pool ) );
 }
 
 =item $c->prepare_uploads
@@ -74,31 +94,35 @@ sub prepare_uploads {
     my $c = shift;
 
     my @uploads;
+    
+    if ( my $body = $c->apr->body ) {
+    
+        $body->param_class('APR::Request::Param');
 
-    $c->cgi->upload->do( sub {
-        my ( $field, $upload ) = @_;
+        $body->uploads( $c->pool )->do( sub {
+            my ( $field, $upload ) = @_;
 
-        my $object = Catalyst::Request::Upload->new(
-            filename => $upload->filename,
-            size     => $upload->size,
-            tempname => $upload->tempname,
-            type     => $upload->type
-        );
+            my $object = Catalyst::Request::Upload->new(
+                filename => $upload->upload_filename,
+                size     => $upload->upload_size,
+                tempname => $upload->upload_tempname,
+                type     => $upload->upload_type
+            );
 
-        push( @uploads, $field, $object );
+            push( @uploads, $field, $object );
 
-        return 1;
-    });
+            return 1;
+        });
 
-    $c->request->upload(@uploads);
+        $c->request->upload(@uploads);
+    }
 }
 
 =back
 
 =head1 SEE ALSO
 
-L<Catalyst>, L<Catalyst::Engine>, L<Catalyst::Engine::CGI::Base>, 
-sL<APR::Request>.
+L<Catalyst>, L<APR::Request::CGI>, L<Catalyst::Engine::CGI::Base>.
 
 =head1 AUTHOR