]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WWW.pm
wwwstream: allow undef noop callback
[public-inbox.git] / lib / PublicInbox / WWW.pm
index cbd3142d1c62c256766ac0fe842486f1c164364a..542530862600bd59a911228f2c73cbbc01558a54 100644 (file)
@@ -13,7 +13,6 @@ package PublicInbox::WWW;
 use 5.008;
 use strict;
 use warnings;
-use Plack::Request;
 use PublicInbox::Config;
 use PublicInbox::Hval;
 use URI::Escape qw(uri_escape_utf8 uri_unescape);
@@ -40,9 +39,7 @@ sub run {
 
 sub call {
        my ($self, $env) = @_;
-       my $cgi = Plack::Request->new($env);
-       my $ctx = { cgi => $cgi, env => $env, www => $self,
-               pi_config => $self->{pi_config} };
+       my $ctx = { env => $env, www => $self, pi_config => $self->{pi_config} };
 
        # we don't care about multi-value
        my %qp = map {
@@ -152,7 +149,7 @@ sub invalid_inbox {
                $ctx->{git_dir} = $obj->{mainrepo};
                $ctx->{git} = $obj->git;
                # for PublicInbox::HTTP::weaken_task:
-               $ctx->{cgi}->{env}->{'pi-httpd.inbox'} = $obj;
+               $ctx->{env}->{'pi-httpd.inbox'} = $obj;
                $ctx->{-inbox} = $obj;
                $ctx->{inbox} = $inbox;
                return;
@@ -162,7 +159,7 @@ sub invalid_inbox {
        # generation and link things intended for nntp:// to https?://,
        # so try to infer links and redirect them to the appropriate
        # list URL.
-       $self->news_www->call($ctx->{cgi}->{env});
+       $self->news_www->call($ctx->{env});
 }
 
 # returns undef if valid, array ref response if invalid
@@ -236,8 +233,7 @@ sub get_mid_html {
        require Email::MIME;
        my $mime = Email::MIME->new($x);
        searcher($ctx);
-       [ 200, [ 'Content-Type' => 'text/html; charset=UTF-8' ],
-         PublicInbox::View::msg_html($ctx, $mime, $foot) ];
+       PublicInbox::View::msg_html($ctx, $mime, $foot);
 }
 
 # /$INBOX/$MESSAGE_ID/t/
@@ -268,10 +264,11 @@ sub footer {
        my $urls;
        my @urls = @{$obj->cloneurl};
        my %seen = map { $_ => 1 } @urls;
-       my $cgi = $ctx->{cgi};
-       my $http = $cgi->base->as_string . $obj->{name};
+       my $env = $ctx->{env};
+       my $http = $obj->base_url($env);
+       chop $http;
        $seen{$http} or unshift @urls, $http;
-       my $ssoma_url = PublicInbox::Hval::prurl($ctx->{env}, SSOMA_URL);
+       my $ssoma_url = PublicInbox::Hval::prurl($env, SSOMA_URL);
        if (scalar(@urls) == 1) {
                $urls = "URL for <a\nhref=\"" . $ssoma_url .
                        qq(">ssoma</a> or <b>git clone --mirror $urls[0]</b>);
@@ -285,7 +282,7 @@ sub footer {
        $ctx->{footer} = join("\n",
                '- ' . $desc,
                "A <a\nhref=\"" .
-                       PublicInbox::Hval::prurl($ctx->{cgi}->{env}, PI_URL) .
+                       PublicInbox::Hval::prurl($ctx->{env}, PI_URL) .
                        '">public-inbox</a>, ' .
                        'anybody may post in plain-text (not HTML):',
                $addr,
@@ -330,7 +327,6 @@ sub get_thread_mbox {
 sub get_thread_atom {
        my ($ctx) = @_;
        searcher($ctx) or return need_search($ctx);
-       $ctx->{self_url} = $ctx->{cgi}->uri->as_string;
        require PublicInbox::Feed;
        PublicInbox::Feed::generate_thread_atom($ctx);
 }
@@ -389,20 +385,19 @@ sub legacy_redirects {
        } elsif ($path_info =~ m!$INBOX_RE/(\S+/\S+)/f\z!o) {
                r301($ctx, $1, $2);
        } else {
-               $self->news_www->call($ctx->{cgi}->{env});
+               $self->news_www->call($ctx->{env});
        }
 }
 
 sub r301 {
        my ($ctx, $inbox, $mid, $suffix) = @_;
-       my $cgi = $ctx->{cgi};
        my $obj = $ctx->{-inbox};
        unless ($obj) {
                my $r404 = invalid_inbox($ctx->{www}, $ctx, $inbox);
                return $r404 if $r404;
                $obj = $ctx->{-inbox};
        }
-       my $url = $obj->base_url($cgi);
+       my $url = $obj->base_url($ctx->{env});
        my $qs = $ctx->{env}->{QUERY_STRING};
        $url .= (uri_escape_utf8($mid) . '/') if (defined $mid);
        $url .= $suffix if (defined $suffix);