X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FEngine.pm;h=ff2e79785161a6f657c76698942a3019ef7491b2;hp=423cf4129780aa9adc07602683d3bd58735081f2;hb=4ab87e274ac0a05f98c10a4cdba467ba4398b0d3;hpb=33117422d27c359a700390643e72f5382a19524e
diff --git a/lib/Catalyst/Engine.pm b/lib/Catalyst/Engine.pm
index 423cf41..ff2e797 100644
--- a/lib/Catalyst/Engine.pm
+++ b/lib/Catalyst/Engine.pm
@@ -30,9 +30,6 @@ See L.
=head1 METHODS
-=head2 $self->finalize_output
-
-, see finalize_body
=head2 $self->finalize_body($c)
@@ -56,6 +53,8 @@ sub finalize_body {
=head2 $self->finalize_cookies($c)
+Create CGI::Cookies from $c->res->cookies, and set them as response headers.
+
=cut
sub finalize_cookies {
@@ -83,6 +82,10 @@ sub finalize_cookies {
=head2 $self->finalize_error($c)
+Output an apropriate error message, called if there's an error in $c
+after the dispatch has finished. Will output debug messages if Catalyst
+is in debug mode, or a `please come back later` message otherwise.
+
=cut
sub finalize_error {
@@ -102,7 +105,7 @@ sub finalize_error {
. '
'
} @{ $c->error };
$error ||= 'No output';
- $error = "$error
";
+ $error = qq{$error
};
$title = $name = "$name on Catalyst $Catalyst::VERSION";
$name = "$name
";
@@ -128,7 +131,7 @@ sub finalize_error {
push @infos, sprintf <<"EOF", $name, $value;
EOF
$i++;
@@ -233,6 +236,15 @@ EOF
font-size: medium;
font-weight: normal;
}
+ /* from http://users.tkk.fi/~tkarvine/linux/doc/pre-wrap/pre-wrap-css3-mozilla-opera-ie.html */
+ /* Browser specific (not valid) styles to make preformatted text wrap */
+ pre {
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+ }
@@ -254,6 +266,8 @@ EOF
=head2 $self->finalize_headers($c)
+Abstract method, allows engines to write headers to response
+
=cut
sub finalize_headers { }
@@ -270,6 +284,8 @@ sub finalize_read {
=head2 $self->finalize_uploads($c)
+Clean up after uploads, deleting temp files.
+
=cut
sub finalize_uploads {
@@ -287,6 +303,8 @@ sub finalize_uploads {
=head2 $self->prepare_body($c)
+sets up the L object body using L
+
=cut
sub prepare_body {
@@ -303,11 +321,20 @@ sub prepare_body {
while ( my $buffer = $self->read($c) ) {
$c->prepare_body_chunk($buffer);
}
+
+ # paranoia against wrong Content-Length header
+ my $remaining = $self->read_length - $self->read_position;
+ if ($remaining > 0) {
+ $self->finalize_read($c);
+ Catalyst::Exception->throw("Wrong Content-Length value: ". $self->read_length);
+ }
}
}
=head2 $self->prepare_body_chunk($c)
+Add a chunk to the request body.
+
=cut
sub prepare_body_chunk {
@@ -318,6 +345,8 @@ sub prepare_body_chunk {
=head2 $self->prepare_body_parameters($c)
+Sets up parameters from body.
+
=cut
sub prepare_body_parameters {
@@ -327,12 +356,16 @@ sub prepare_body_parameters {
=head2 $self->prepare_connection($c)
+Abstract method implemented in engines.
+
=cut
sub prepare_connection { }
=head2 $self->prepare_cookies($c)
+Parse cookies from header. Sets a L object.
+
=cut
sub prepare_cookies {
@@ -351,6 +384,8 @@ sub prepare_headers { }
=head2 $self->prepare_parameters($c)
+sets up parameters from query and post parameters.
+
=cut
sub prepare_parameters {
@@ -378,6 +413,8 @@ sub prepare_parameters {
=head2 $self->prepare_path($c)
+abstract method, implemented by engines.
+
=cut
sub prepare_path { }
@@ -386,6 +423,8 @@ sub prepare_path { }
=head2 $self->prepare_query_parameters($c)
+process the query string and extract query parameters.
+
=cut
sub prepare_query_parameters {
@@ -404,6 +443,8 @@ sub prepare_query_parameters {
=head2 $self->prepare_read($c)
+prepare to read from the engine.
+
=cut
sub prepare_read {
@@ -415,6 +456,8 @@ sub prepare_read {
=head2 $self->prepare_request(@arguments)
+Populate the context object from the request object.
+
=cut
sub prepare_request { }
@@ -450,6 +493,8 @@ sub prepare_uploads {
=head2 $self->prepare_write($c)
+Abstract method. Implemented by the engines.
+
=cut
sub prepare_write { }
@@ -507,12 +552,16 @@ The amount of input data that has already been read.
=head2 $self->run($c)
+Start the engine. Implemented by the various engine classes.
+
=cut
sub run { }
=head2 $self->write($c, $buffer)
+Writes the buffer to the client. Can only be called once for a request.
+
=cut
sub write {
@@ -526,6 +575,10 @@ sub write {
print STDOUT $buffer;
}
+=head2 $self->finalize_output
+
+, see finalize_body
+
=head1 AUTHORS
Sebastian Riedel,