#
# Used by the web interface to link to messages outside of the our
@@ -8,8 +8,9 @@
package PublicInbox::ExtMsg;
use strict;
use warnings;
-use PublicInbox::Hval qw(ascii_html prurl);
-use PublicInbox::WwwStream;
+use PublicInbox::Hval qw(ascii_html prurl mid_href);
+use PublicInbox::WwwStream qw(html_oneshot);
+use PublicInbox::Smsg;
our $MIN_PARTIAL_LEN = 16;
# TODO: user-configurable
@@ -17,7 +18,7 @@ our @EXT_URL = map { ascii_html($_) } (
# leading "//" denotes protocol-relative (http:// or https://)
'//marc.info/?i=%s',
'//www.mail-archive.com/search?l=mid&q=%s',
- 'nntp://news.gmane.org/%s',
+ 'nntp://news.gmane.io/%s',
'https://lists.debian.org/msgid-search/%s',
'//docs.FreeBSD.org/cgi/mid.cgi?db=mid&id=%s',
'https://www.w3.org/mid/%s',
@@ -29,7 +30,7 @@ our @EXT_URL = map { ascii_html($_) } (
sub PARTIAL_MAX () { 100 }
sub mids_from_mset { # Search::retry_reopen callback
- [ map { PublicInbox::SearchMsg::from_mitem($_)->mid } $_[0]->items ];
+ [ map { PublicInbox::Smsg::from_mitem($_)->mid } $_[0]->items ];
}
sub search_partial ($$) {
@@ -129,9 +130,8 @@ sub ext_msg {
}
my $code = 404;
- my $h = PublicInbox::Hval->new_msgid($mid);
- my $href = $h->{href};
- my $html = $h->as_html;
+ my $href = mid_href($mid);
+ my $html = ascii_html($mid);
my $title = "<$html> not found";
my $s = "Message-ID <$html>\nnot found\n";
if ($n_partial) {
@@ -145,10 +145,9 @@ sub ext_msg {
my $env = $ctx->{env} if $ibx->{name} eq $cur_name;
my $u = $ibx->base_url($env) or next;
foreach my $m (@$res) {
- my $p = PublicInbox::Hval->new_msgid($m);
- my $r = $p->{href};
- my $t = $p->as_html;
- $s .= qq{$u$t/\n};
+ my $href = mid_href($m);
+ my $html = ascii_html($m);
+ $s .= qq{$u$html/\n};
}
}
}
@@ -160,7 +159,7 @@ sub ext_msg {
$ctx->{-html_tip} = $s .= '
';
$ctx->{-title_html} = $title;
$ctx->{-upfx} = '../';
- PublicInbox::WwwStream->response($ctx, $code);
+ html_oneshot($ctx, $code);
}
sub ext_urls {
@@ -183,9 +182,8 @@ sub ext_urls {
sub exact {
my ($ctx, $found, $mid) = @_;
- my $h = PublicInbox::Hval->new_msgid($mid);
- my $href = $h->{href};
- my $html = $h->as_html;
+ my $href = mid_href($mid);
+ my $html = ascii_html($mid);
my $title = "<$html> found in ";
my $end = @$found == 1 ? 'another inbox' : 'other inboxes';
$ctx->{-title_html} = $title . $end;
@@ -199,7 +197,7 @@ sub exact {
qq($u$html/\n)
} @$found),
$ext_urls, '');
- PublicInbox::WwwStream->response($ctx, $code);
+ html_oneshot($ctx, $code);
}
1;