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=9c8a4b2d80c41a2c3b861ba2c837176906adc1f1;hb=4c21ba3bd6fd11b9ba6e6af65bf25a497c3709b1;hpb=99a543eea153f4d7f6161e171bb7f4770e966138 diff --git a/lib/Catalyst/Response.pm b/lib/Catalyst/Response.pm index 9c8a4b2..1e1e4bf 100644 --- a/lib/Catalyst/Response.pm +++ b/lib/Catalyst/Response.pm @@ -6,13 +6,15 @@ use HTTP::Headers; with 'MooseX::Emulate::Class::Accessor::Fast'; has cookies => (is => 'rw', default => sub { {} }); -has body => (is => 'rw', default => undef, lazy => 1, predicate => 'has_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, @@ -147,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 { @@ -200,6 +208,7 @@ sub print { defined $self->write($,) or return; defined $self->write($_) or return; } + defined $self->write($\) or return; return 1; }