X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FResponse.pm;h=1e1e4bfbeeb8d6174b6650753a7b44031c141a64;hp=cb73a34631d878160435c8245faeff4fabfadf6e;hb=4c21ba3bd6fd11b9ba6e6af65bf25a497c3709b1;hpb=7e7437987dd389a99e16356af7c63cf672fde67d diff --git a/lib/Catalyst/Response.pm b/lib/Catalyst/Response.pm index cb73a34..1e1e4bf 100644 --- a/lib/Catalyst/Response.pm +++ b/lib/Catalyst/Response.pm @@ -6,19 +6,15 @@ use HTTP::Headers; with 'MooseX::Emulate::Class::Accessor::Fast'; has cookies => (is => 'rw', default => sub { {} }); -has body => (is => 'rw', default => '', lazy => 1, predicate => 'has_body', - clearer => '_clear_body' -); -after 'body' => sub { # If someone assigned undef, clear the body so we get '' - if (scalar(@_) == 2 && !defined($_[1])) { - $_[0]->_clear_body; - } -}; +has body => (is => 'rw', default => undef); +sub has_body { defined($_[0]->body) } + has location => (is => 'rw'); has status => (is => 'rw', default => 200); has finalized_headers => (is => 'rw', default => 0); has headers => ( is => 'rw', + isa => 'HTTP::Headers', handles => [qw(content_encoding content_length content_type header)], default => sub { HTTP::Headers->new() }, required => 1, @@ -65,7 +61,7 @@ will turn the Catalyst::Response into a HTTP Response and return it to the clien =head1 METHODS -=head2 $res->body(<$text|$fh|$iohandle_object) +=head2 $res->body( $text | $fh | $iohandle_object ) $c->response->body('Catalyst rocks!'); @@ -150,9 +146,15 @@ C<302>. This is a convenience method that sets the Location header to the redirect destination, and then sets the response status. You will -want to C< return; > or C< $c->detach() > to interrupt the normal +want to C< return > or C<< $c->detach() >> to interrupt the normal processing flow if you want the redirect to occur straight away. +B do not give a relative URL as $url, i.e: one that is not fully +qualified (= C, etc.) or that starts with a slash +(= C). While it may work, it is not guaranteed to do the right +thing and is not a standard behaviour. You may opt to use uri_for() or +uri_for_action() instead. + =cut sub redirect { @@ -206,6 +208,7 @@ sub print { defined $self->write($,) or return; defined $self->write($_) or return; } + defined $self->write($\) or return; return 1; }