From 8968889e3ebfa09dd2c80fe8b917b83ac13ff356 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 25 Feb 2016 03:10:50 +0000 Subject: remove direct CGI.pm support Relying on Plack::Handler::CGI is much easier for long-term maintenance and development. Nowadays, we even include our own httpd implementation to facilitate easier deployment with PSGI/Plack. --- lib/PublicInbox/ExtMsg.pm | 11 ++--------- lib/PublicInbox/Feed.pm | 9 +-------- lib/PublicInbox/GitHTTPBackend.pm | 6 ++---- lib/PublicInbox/WWW.pm | 24 ++++-------------------- 4 files changed, 9 insertions(+), 41 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/ExtMsg.pm b/lib/PublicInbox/ExtMsg.pm index d89a7e30..cf9b6d58 100644 --- a/lib/PublicInbox/ExtMsg.pm +++ b/lib/PublicInbox/ExtMsg.pm @@ -86,15 +86,7 @@ sub ext_msg { eval { require PublicInbox::Msgmap }; my $have_mm = $@ ? 0 : 1; my $cgi = $ctx->{cgi}; - my $base_url; - my $scheme; - if (ref($cgi) eq 'CGI') { - $base_url = $cgi->url(-base) . '/'; - $scheme = $cgi->protocol; - } else { # Plack::Request - $base_url = $cgi->base->as_string; - $scheme = $cgi->env->{'psgi.url_scheme'}; - } + my $base_url = $cgi->base->as_string; if ($have_mm) { my $tmp_mid = $mid; my $url; @@ -145,6 +137,7 @@ again: if (@EXT_URL && index($mid, '@') >= 0) { $code = 300; $s .= "\nPerhaps try an external site:\n\n"; + my $scheme = $cgi->scheme; foreach my $u (@EXT_URL) { $u = "$scheme:$u" if $u =~ m!\A//!; my $r = sprintf($u, $href); diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index a0aa62af..a5828a8e 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -284,14 +284,7 @@ sub get_feedopts { my $url_base; if ($cgi) { - my $base; - if (ref($cgi) eq 'CGI') { - $base = $cgi->url(-base); - } else { # Plack::Request - $base = $cgi->base->as_string; - $base =~ s!/\z!!; - } - $url_base = "$base/$listname"; + $url_base = $cgi->base->as_string . $listname; if (my $mid = $ctx->{mid}) { # per-thread feed: $rv{atomurl} = "$url_base/$mid/t.atom"; } else { diff --git a/lib/PublicInbox/GitHTTPBackend.pm b/lib/PublicInbox/GitHTTPBackend.pm index 71b7a8f1..562c290e 100644 --- a/lib/PublicInbox/GitHTTPBackend.pm +++ b/lib/PublicInbox/GitHTTPBackend.pm @@ -55,7 +55,7 @@ sub serve { my $len = $size; my @h; - my $env = $cgi->{env} || \%ENV; + my $env = $cgi->{env}; my $range = $env->{HTTP_RANGE}; if (defined $range && $range =~ /\bbytes=(\d*)-(\d*)\z/) { ($code, $len) = prepare_range($cgi, $in, \@h, $1, $2, $size); @@ -117,9 +117,7 @@ sub prepare_range { push @$h, "bytes $beg-$end/$size"; # FIXME: Plack::Middleware::Deflater bug? - if (my $env = $cgi->{env}) { - $env->{'psgix.no-compress'} = 1; - } + $cgi->{env}->{'psgix.no-compress'} = 1; } } ($code, $len); diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 1f28df20..651c19e0 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -223,12 +223,6 @@ sub get_thread { PublicInbox::View::thread_html($ctx, $foot, $srch); } -sub self_url { - my ($cgi) = @_; - # Plack::Request - ref($cgi) eq 'CGI' ? $cgi->self_url : $cgi->uri->as_string; -} - sub ctx_get { my ($ctx, $key) = @_; my $val = $ctx->{$key}; @@ -258,9 +252,7 @@ sub footer { my $urls = try_cat("$git_dir/cloneurl"); my @urls = split(/\r?\n/, $urls || ''); my %seen = map { $_ => 1 } @urls; - my $cgi = $ctx->{cgi}; - my $http = (ref($cgi) eq 'CGI') ? $cgi->url(-base) . "/$listname" : - $cgi->base->as_string . $listname; + my $http = $ctx->{cgi}->base->as_string . $listname; $seen{$http} or unshift @urls, $http; if (scalar(@urls) == 1) { $urls = "URL for {self_url} = self_url($ctx->{cgi}); + $ctx->{self_url} = $ctx->{cgi}->uri->as_string; require PublicInbox::Feed; PublicInbox::Feed::generate_thread_atom($ctx); } @@ -390,16 +382,8 @@ sub r301 { my ($ctx, $listname, $mid, $suffix) = @_; my $cgi = $ctx->{cgi}; my $url; - my $qs; - if (ref($cgi) eq 'CGI') { - $url = $cgi->url(-base) . '/'; - $qs = $cgi->query_string; - } else { # Plack::Request - $url = $cgi->base->as_string; - $qs = $cgi->env->{QUERY_STRING}; - } - - $url .= $listname . '/'; + my $qs = $cgi->env->{QUERY_STRING}; + $url = $cgi->base->as_string . $listname . '/'; $url .= (uri_escape_utf8($mid) . '/') if (defined $mid); $url .= $suffix if (defined $suffix); $url .= "?$qs" if $qs ne ''; -- cgit v1.2.3-24-ge0c7