Documentation fix for Catalyst::Response::from_psgi_response
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Response.pm
index f5ec77c..86b6b10 100644 (file)
@@ -28,7 +28,7 @@ has _writer => (
 
 has write_fh => (
   is=>'ro',
-  predicate=>'has_write_fh',
+  predicate=>'_has_write_fh',
   lazy=>1,
   builder=>'_build_write_fh',
 );
@@ -42,7 +42,7 @@ sub _build_write_fh {
 
 sub DEMOLISH {
   my $self = shift;
-  return if $self->has_write_fh;
+  return if $self->_has_write_fh;
   if($self->_has_writer) {
     $self->_writer->close
   }
@@ -117,7 +117,7 @@ sub from_psgi_response {
     if(ref $psgi_res eq 'ARRAY') {
         my ($status, $headers, $body) = @$psgi_res;
         $self->status($status);
-        $self->headers($headers);
+        $self->headers(HTTP::Headers->new(@$headers));
         if(ref $body eq 'ARRAY') {
           $self->body(join '', grep defined, @$body);
         } else {
@@ -125,9 +125,10 @@ sub from_psgi_response {
         }
     } elsif(ref $psgi_res eq 'CODE') {
         $psgi_res->(sub {
-            my ($status, $headers, $maybe_body) = @_;
+            my $response = shift;
+            my ($status, $headers, $maybe_body) = @$response;
             $self->status($status);
-            $self->headers($headers);
+            $self->headers(HTTP::Headers->new(@$headers));
             if($maybe_body) {
                 if(ref $maybe_body eq 'ARRAY') {
                   $self->body(join '', grep defined, @$maybe_body);
@@ -137,8 +138,8 @@ sub from_psgi_response {
             } else {
                 return $self->write_fh;
             }
-        });        
-    } else {
+        });  
+     } else {
         die "You can't set a Catalyst response from that, expect a valid PSGI response";
     }
 }
@@ -361,7 +362,7 @@ Example:
 
     sub myaction :Local Args {
       my ($self, $c) = @_;
-      $c->res->from_psgi_response($app->($self->env));
+      $c->res->from_psgi_response($app->($c->req->env));
     }
 
 Please note this does not attempt to map or nest your PSGI application under