about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-07-02 07:56:34 +0000
committerEric Wong <e@80x24.org>2016-07-02 07:57:27 +0000
commite358bd7a3833f8c5bf9db57d228888f9c5f3692e (patch)
tree4822b8d06e92f78ea3861d83f8c999015ccae397 /lib
parent0f9091f381191484f1a5ed5189d23cbfa88de6fc (diff)
downloadpublic-inbox-e358bd7a3833f8c5bf9db57d228888f9c5f3692e.tar.gz
This is lighter and we can work further towards eliminating
our Plack::Request dependency entirely.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/Feed.pm4
-rw-r--r--lib/PublicInbox/Inbox.pm12
-rw-r--r--lib/PublicInbox/Mbox.pm2
-rw-r--r--lib/PublicInbox/WWW.pm2
-rw-r--r--lib/PublicInbox/WwwStream.pm9
5 files changed, 13 insertions, 16 deletions
diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm
index 2f141c44..ffbf5c80 100644
--- a/lib/PublicInbox/Feed.pm
+++ b/lib/PublicInbox/Feed.pm
@@ -297,13 +297,11 @@ sub get_feedopts {
         my $pi_config = $ctx->{pi_config};
         my $inbox = $ctx->{inbox};
         my $obj = $ctx->{-inbox};
-        my $cgi = $ctx->{cgi};
         my %rv = ( description => $obj->description );
 
         $rv{address} = $obj->{address};
         $rv{id_addr} = $obj->{-primary_address};
-        my $url_base;
-        $url_base = $obj->base_url($cgi); # CGI may be undef
+        my $url_base = $obj->base_url($ctx->{env});
         if (my $mid = $ctx->{mid}) { # per-thread feed:
                 $rv{atomurl} = "$url_base$mid/t.atom";
         } else {
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index ada713c7..96c92652 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -71,10 +71,14 @@ sub cloneurl {
 }
 
 sub base_url {
-        my ($self, $prq) = @_; # Plack::Request
-        if (defined $prq) {
-                my $url = $prq->base->as_string;
-                $url .= '/' if $url !~ m!/\z!; # for mount in Plack::Builder
+        my ($self, $env) = @_;
+        if ($env) { # PSGI env
+                my $scheme = $env->{'psgi.url_scheme'};
+                my $host_port = $env->{HTTP_HOST} ||
+                        "$env->{SERVER_NAME}:$env->{SERVER_PORT}";
+                my $url = "$scheme://$host_port". ($env->{SCRIPT_NAME} || '/');
+                # for mount in Plack::Builder
+                $url .= '/' if $url !~ m!/\z!;
                 $url .= $self->{name} . '/';
         } else {
                 # either called from a non-PSGI environment (e.g. NNTP/POP3)
diff --git a/lib/PublicInbox/Mbox.pm b/lib/PublicInbox/Mbox.pm
index 1c97f959..9dad0f6d 100644
--- a/lib/PublicInbox/Mbox.pm
+++ b/lib/PublicInbox/Mbox.pm
@@ -28,7 +28,7 @@ sub msg_str {
                 $header_obj->header_set($d);
         }
         my $ibx = $ctx->{-inbox};
-        my $base = $ibx->base_url($ctx->{cgi});
+        my $base = $ibx->base_url($ctx->{env});
         my $mid = mid_clean($header_obj->header('Message-ID'));
         $mid = uri_escape_utf8($mid);
         my @append = (
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index c4509bd9..1e23c439 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -401,7 +401,7 @@ sub r301 {
                 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);
diff --git a/lib/PublicInbox/WwwStream.pm b/lib/PublicInbox/WwwStream.pm
index fdab4da3..be6ce2e6 100644
--- a/lib/PublicInbox/WwwStream.pm
+++ b/lib/PublicInbox/WwwStream.pm
@@ -62,13 +62,8 @@ sub _html_end {
         my $obj = $ctx->{-inbox};
         my $desc = ascii_html($obj->description);
 
-        # FIXME: cleanup
-        my $env = $ctx->{env};
-        my $scheme = $env->{'psgi.url_scheme'};
-        my $host_port = $env->{HTTP_HOST} ||
-                        "$env->{SERVER_NAME}:$env->{SERVER_PORT}";
-        my $http = "$scheme://$host_port".($env->{SCRIPT_NAME} || '/');
-        $http = URI->new($http . $obj->{name})->canonical->as_string;
+        my $http = $obj->base_url($ctx->{env});
+        chop $http;
         my %seen = ( $http => 1 );
         my @urls = ($http);
         foreach my $u (@{$obj->cloneurl}) {