From 967f6d1b1626392ee4340ea356a00651462377b3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 5 Jul 2020 23:27:23 +0000 Subject: wwwlisting: use GzipFilter for HTML The changes to GzipFilter here may be beneficial for building HTML and XML responses in other places, too. --- lib/PublicInbox/WwwListing.pm | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'lib/PublicInbox/WwwListing.pm') diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm index a3d4e2b3..780c97e9 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -10,6 +10,8 @@ use PublicInbox::Hval qw(ascii_html prurl); use PublicInbox::Linkify; use PublicInbox::View; use PublicInbox::Inbox; +use PublicInbox::NoopFilter; +use PublicInbox::GzipFilter qw(gzf_maybe); use bytes (); # bytes::length use HTTP::Date qw(time2str); use Digest::SHA (); @@ -104,13 +106,15 @@ sub ibx_entry { sub html ($$) { my ($env, $list) = @_; - my $title = 'public-inbox'; - my $out = ''; + my $h = [ 'Content-Type', 'text/html; charset=UTF-8', + 'Content-Length', undef ]; + my $gzf = gzf_maybe($h, $env) || PublicInbox::NoopFilter::new(); + my $out = $gzf->zmore('' . + 'public-inbox listing' . + '
');
 	my $code = 404;
 	if (@$list) {
-		$title .= ' - listing';
 		$code = 200;
-
 		# Schwartzian transform since Inbox->modified is expensive
 		@$list = sort {
 			$b->[0] <=> $a->[0]
@@ -118,13 +122,14 @@ sub html ($$) {
 
 		my $tmp = join("\n", map { ibx_entry(@$_, $env) } @$list);
 		my $l = PublicInbox::Linkify->new;
-		$out = '
'.$l->to_html($tmp).'

'; + $out .= $gzf->zmore($l->to_html($tmp)); + } else { + $out .= $gzf->zmore('no inboxes, yet'); } - $out = "$title" . $out; - $out .= '
'. PublicInbox::WwwStream::code_footer($env) .
-		'
'; - - my $h = [ 'Content-Type', 'text/html; charset=UTF-8' ]; + $out .= $gzf->zflush('

'.
+				PublicInbox::WwwStream::code_footer($env) .
+				'
'); + $h->[3] = bytes::length($out); [ $code, $h, [ $out ] ]; } -- cgit v1.2.3-24-ge0c7