diff options
-rw-r--r-- | lib/Plack/Middleware/Xslate.pm | 21 | ||||
-rw-r--r-- | t/basic.t | 4 |
2 files changed, 9 insertions, 16 deletions
diff --git a/lib/Plack/Middleware/Xslate.pm b/lib/Plack/Middleware/Xslate.pm index 4c1566e..5ef3f97 100644 --- a/lib/Plack/Middleware/Xslate.pm +++ b/lib/Plack/Middleware/Xslate.pm @@ -107,22 +107,13 @@ sub serve_path { $filename = File::Spec->abs2rel($filename, $self->root); } - my $rendered = $self->{xslate}->render($filename, $self->xslate_vars); - - my @headers; - while (@{ $res->[1] }) { - my ($k, $v) = splice @{ $res->[1] }, 0, 2; - if ($k =~ /^content-length$/i) { - $v = length($rendered); - } - push @headers, $k, $v; - } - - return [ - $res->[0], - \@headers, - [ $rendered ] + $res->[2] = [ + $self->{xslate}->render($filename, $self->xslate_vars) ]; + + Plack::Util::header_set($res->[1], 'Content-Length', length($res->[2][0])); + + return $res; } =head1 BUGS @@ -21,7 +21,7 @@ test_psgi { my $res = $cb->(GET '/index.html'); ok($res->is_success) || diag($res->content); - is($res->content, <<'CONTENT'); + my $rendered = <<'CONTENT'; <!DOCTYPE html> <html> <head> @@ -33,6 +33,8 @@ test_psgi </body> </html> CONTENT + is($res->content, $rendered); + is($res->header('Content-Length'), length($rendered)); } { |