Fixed MP19 uploads. Added request/response body. Added support in all Engines for...
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Engine / Test.pm
index 0561348..88800fa 100644 (file)
@@ -49,6 +49,15 @@ This class overloads some methods from C<Catalyst::Engine>.
 
 =over 4
 
+=item $c->finalize_body
+
+=cut
+
+sub finalize_body {
+    my $c = shift;
+    $c->http->response->content( $c->response->output );
+}
+
 =item $c->finalize_headers
 
 =cut
@@ -63,13 +72,13 @@ sub finalize_headers {
     }
 }
 
-=item $c->finalize_output
+=item $c->prepare_body
 
 =cut
 
-sub finalize_output {
+sub prepare_body {
     my $c = shift;
-    $c->http->response->content( $c->response->output );
+    $c->request->input( $c->http->request->content );
 }
 
 =item $c->prepare_connection
@@ -120,27 +129,28 @@ sub prepare_parameters {
 
             if ( $parameters{filename} ) {
 
-                my $fh = File::Temp->new;
+                my $fh = File::Temp->new( UNLINK => 0 );
                 $fh->write( $part->content ) or die $!;
-                seek( $fh, 0, 0 ) or die $!;
+                $fh->flush or die $!;
 
-                my $upload = {
-                    fh       => $fh,
+                my $upload = Catalyst::Request::Upload->new(
                     filename => $parameters{filename},
-                    size     => ( stat $fh )[7],
+                    size     => ( $fh->stat )[7],
                     tempname => $fh->filename,
                     type     => $part->content_type
-                };
+                );
+
+                $fh->close;
 
                 push( @uploads, $parameters{name}, $upload );
-                push( @params,  $parameters{name}, $fh );
+                push( @params,  $parameters{name}, $parameters{filename} );
             }
             else {
                 push( @params, $parameters{name}, $part->content );
             }
         }
     }
-    
+
     $c->req->_assign_values( $c->req->parameters, \@params );
     $c->req->_assign_values( $c->req->uploads, \@uploads );
 }