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;
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);
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 {
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>);
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);
}
use PublicInbox::Daemon;
use PublicInbox::HTTP;
use PublicInbox::HTTPD;
-use Plack::Request;
use Plack::Builder;
my %httpds;
my $app;
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 $@;
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 $@;
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 $@;
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";
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 $@;
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 $@;