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=e53f30dc1a868cd91838b1b6470b3b7aca9b10d5;hp=7368a66874454f99c4b048abfd8864bf29d65a73;hb=dd096a3ad75ebb2c0decf75578e52fc031d60268;hpb=00038a21d88ab4f3620068c7b15e8f02c1b13e2d diff --git a/lib/Catalyst/Response.pm b/lib/Catalyst/Response.pm index 7368a66..e53f30d 100644 --- a/lib/Catalyst/Response.pm +++ b/lib/Catalyst/Response.pm @@ -103,6 +103,7 @@ sub write { $self->_context->finalize_headers unless $self->finalized_headers; $buffer = q[] unless defined $buffer; + $buffer = $self->_context->encoding->encode( $buffer, $self->_context->_encode_check ); my $len = length($buffer); $self->_writer->write($buffer); @@ -391,7 +392,20 @@ $res->code is an alias for this, to match HTTP::Response->code. =head2 $res->write( $data ) -Writes $data to the output stream. +Writes $data to the output stream. Calling this method will finalize your +headers and send the headers and status code response to the client (so changing +them afterwards is a waste... be sure to set your headers correctly first). + +You may call this as often as you want throughout your response cycle. You may +even set a 'body' afterward. So for example you might write your HTTP headers +and the HEAD section of your document and then set the body from a template +driven from a database. In some cases this can seem to the client as if you had +a faster overall response (but note that unless your server support chunked +body your content is likely to get queued anyway (L and most other +http 1.1 webservers support this). + +If there is an encoding set, we encode each line of the response (the default +encoding is UTF-8). =head2 $res->write_fh @@ -427,6 +441,10 @@ example (assuming you are using a supporting server, like L }); } +Like the 'write' method, calling this will finalize headers. Unlike 'write' when you +can this it is assumed you are taking control of the response so the body is never +finalized (there isn't one anyway) and you need to call the close method. + =head2 $res->print( @data ) Prints @data to the output stream, separated by $,. This lets you pass