X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FResponse.pm;h=1e1e4bfbeeb8d6174b6650753a7b44031c141a64;hb=ca5d34dfc295012a749a8454d2b213580e03d55c;hp=f268aefbee830273aaedc6d3c1859b86cb30e983;hpb=ee24f3a811ffe5b55e2645cfcb060b0fc4800cfb;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Response.pm b/lib/Catalyst/Response.pm index f268aef..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, @@ -153,6 +149,12 @@ redirect destination, and then sets the response status. You will 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; }