]> Sergey Matveev's repositories - public-inbox.git/commitdiff
www: remove Plack::Request dependency entirely
authorEric Wong <e@80x24.org>
Sat, 2 Jul 2016 07:56:38 +0000 (07:56 +0000)
committerEric Wong <e@80x24.org>
Sat, 2 Jul 2016 07:57:29 +0000 (07:57 +0000)
Lighter and ever-so-slightly faster!

Most importantly, this won't do non-obvious stuff behind our
backs like trying to parse a POST request body for a query
string param.

lib/PublicInbox/Feed.pm
lib/PublicInbox/WWW.pm
script/public-inbox-httpd
t/httpd-corner.t
t/httpd-unix.t
t/httpd.t
t/plack.t
t/psgi_attach.t
t/psgi_mount.t

index ffbf5c8062bb2121e2a0eeaca1dd517d7c8d01e6..2983514c83c26af19882d87a9f7b7a42cb50b88b 100644 (file)
@@ -119,17 +119,18 @@ sub end_feed {
 
 sub emit_atom_thread {
        my ($cb, $ctx) = @_;
-       my $res = $ctx->{srch}->get_thread($ctx->{mid});
+       my $mid = $ctx->{mid};
+       my $res = $ctx->{srch}->get_thread($mid);
        return _no_thread($cb) unless $res->{total};
        my $feed_opts = get_feedopts($ctx);
        my $fh = $cb->([200, ['Content-Type' => 'application/atom+xml']]);
+       my $ibx = $ctx->{-inbox};
+       my $html_url = $ibx->base_url($ctx->{env});
+       $html_url .= PublicInbox::Hval->new_msgid($mid)->as_href;
 
-       my $html_url = $feed_opts->{atomurl} = $ctx->{self_url};
-       $html_url =~ s!/t\.atom\z!/!;
        $feed_opts->{url} = $html_url;
        $feed_opts->{emit_header} = 1;
 
-       my $ibx = $ctx->{-inbox};
        foreach my $msg (@{$res->{msgs}}) {
                my $s = feed_entry($feed_opts, mid2path($msg->mid), $ibx);
                $fh->write($s) if defined $s;
index 940e1c5108f382e0ae2c8fee3a1291b772b93575..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 {
@@ -267,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>);
@@ -329,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);
 }
index f19582fafc600ccea7730ed98f45533ff8381ad6..8ba42c2f43e1d503b93480a8517db1eb7693faa9 100755 (executable)
@@ -9,7 +9,6 @@ use Plack::Util;
 use PublicInbox::Daemon;
 use PublicInbox::HTTP;
 use PublicInbox::HTTPD;
-use Plack::Request;
 use Plack::Builder;
 my %httpds;
 my $app;
index b9eaa6fbec46bd3ea377ad8b5ac0b810a74fa437..5ecc69b5e5862021a4808240453b04f70de3301f 100644 (file)
@@ -7,7 +7,7 @@ use warnings;
 use Test::More;
 use Time::HiRes qw(gettimeofday tv_interval);
 
-foreach my $mod (qw(Plack::Util Plack::Request Plack::Builder Danga::Socket
+foreach my $mod (qw(Plack::Util Plack::Builder Danga::Socket
                        HTTP::Date HTTP::Status)) {
        eval "require $mod";
        plan skip_all => "$mod missing for httpd-corner.t" if $@;
index 16f7bdd2e9a9bac5899e552c1c02e38db1a56c65..ef827fc669c1f7d280a59878c459006e64058120 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use warnings;
 use Test::More;
 
-foreach my $mod (qw(Plack::Util Plack::Request Plack::Builder Danga::Socket
+foreach my $mod (qw(Plack::Util Plack::Builder Danga::Socket
                        HTTP::Date HTTP::Status)) {
        eval "require $mod";
        plan skip_all => "$mod missing for httpd-unix.t" if $@;
index 0e19b56805ddde7be2912c775828e17aab67eb96..c2e73608c90122c5a77246aca238a940929c740a 100644 (file)
--- a/t/httpd.t
+++ b/t/httpd.t
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 use Test::More;
 
-foreach my $mod (qw(Plack::Util Plack::Request Plack::Builder Danga::Socket
+foreach my $mod (qw(Plack::Util Plack::Builder Danga::Socket
                        HTTP::Date HTTP::Status)) {
        eval "require $mod";
        plan skip_all => "$mod missing for httpd.t" if $@;
index a4f324571ac12fe3e739b3f788a5a33b9de74f0c..40298e58fc9982a026aeb2552c10bac49ff8efe5 100644 (file)
--- a/t/plack.t
+++ b/t/plack.t
@@ -11,7 +11,7 @@ my $pi_config = "$tmpdir/config";
 my $maindir = "$tmpdir/main.git";
 my $addr = 'test-public@example.com';
 my $cfgpfx = "publicinbox.test";
-my @mods = qw(HTTP::Request::Common Plack::Request Plack::Test
+my @mods = qw(HTTP::Request::Common Plack::Test
        Mail::Thread URI::Escape);
 foreach my $mod (@mods) {
        eval "require $mod";
index ef116c6af13f63fab9368ea91ed13ac2b39da5c0..0d20b7f7f8d1257516d31b0b77b3a89eae7e50d7 100644 (file)
@@ -9,7 +9,7 @@ my $tmpdir = tempdir('psgi-attach-XXXXXX', TMPDIR => 1, CLEANUP => 1);
 my $maindir = "$tmpdir/main.git";
 my $addr = 'test-public@example.com';
 my $cfgpfx = "publicinbox.test";
-my @mods = qw(HTTP::Request::Common Plack::Request Plack::Test URI::Escape);
+my @mods = qw(HTTP::Request::Common Plack::Test URI::Escape);
 foreach my $mod (@mods) {
        eval "require $mod";
        plan skip_all => "$mod missing for plack.t" if $@;
index c1c1b0c642fd96b2adc4454f13c1b5227e6d9bf1..dae45bafe81af1f1a40ab34bced2338cd41e1a4f 100644 (file)
@@ -9,7 +9,7 @@ my $tmpdir = tempdir('psgi-path-XXXXXX', TMPDIR => 1, CLEANUP => 1);
 my $maindir = "$tmpdir/main.git";
 my $addr = 'test-public@example.com';
 my $cfgpfx = "publicinbox.test";
-my @mods = qw(HTTP::Request::Common Plack::Request Plack::Test URI::Escape);
+my @mods = qw(HTTP::Request::Common Plack::Test URI::Escape);
 foreach my $mod (@mods) {
        eval "require $mod";
        plan skip_all => "$mod missing for plack.t" if $@;