]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WwwStream.pm
imap+nntp: share COMPRESS implementation
[public-inbox.git] / lib / PublicInbox / WwwStream.pm
index a88ff9721e941898932d02a9b7f560acdc7fc018..aee78170c713df91ea1186264080fb32a7e2dbfa 100644 (file)
@@ -32,7 +32,7 @@ sub init {
 
 sub async_eml { # for async_blob_cb
        my ($ctx, $eml) = @_;
-       $ctx->{http_out}->write($ctx->translate($ctx->{cb}->($ctx, $eml)));
+       $ctx->write($ctx->{cb}->($ctx, $eml));
 }
 
 sub html_top ($) {
@@ -116,8 +116,26 @@ sub _html_end {
                $x = <<EOF;
 This is a public inbox, see <a
 href="$m">mirroring instructions</a>
-on how to clone and mirror all data and code used for this inbox
+for how to clone and mirror all data and code used for this inbox
 EOF
+               my $has_nntp = @{$ctx->{ibx}->nntp_url($ctx)};
+               my $has_imap = @{$ctx->{ibx}->imap_url($ctx)};
+               if ($has_nntp || $has_imap) {
+                       substr($x, -1, 1) = ";\n"; # s/\n/;\n
+                       if ($has_nntp && $has_imap) {
+                               $x .= <<EOM;
+as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).
+EOM
+                       } elsif ($has_nntp) {
+                               $x .= <<EOM;
+as well as URLs for NNTP newsgroup(s).
+EOM
+                       } else {
+                               $x .= <<EOM;
+as well as URLs for IMAP folder(s).
+EOM
+                       }
+               }
        } else {
                $x = <<EOF;
 This is an external index of several public inboxes,
@@ -152,9 +170,9 @@ sub html_oneshot ($$;$) {
                'Content-Length' => undef ];
        bless $ctx, __PACKAGE__;
        $ctx->{gz} = PublicInbox::GzipFilter::gz_or_noop($res_hdr, $ctx->{env});
-       $ctx->{base_url} //= do {
+       $ctx->{base_url} // do {
                $ctx->zmore(html_top($ctx));
-               base_url($ctx);
+               $ctx->{base_url} = base_url($ctx);
        };
        $ctx->zmore($$sref) if $sref;
        my $bdy = $ctx->zflush(_html_end($ctx));
@@ -169,8 +187,7 @@ sub async_next ($) {
                if (my $smsg = $ctx->{smsg} = $ctx->{cb}->($ctx)) {
                        $ctx->smsg_blob($smsg);
                } else {
-                       $ctx->{http_out}->write(
-                                       $ctx->translate(_html_end($ctx)));
+                       $ctx->write(_html_end($ctx));
                        $ctx->close; # GzipFilter->close
                }
        };