From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 0BD0C1F934 for ; Thu, 16 Sep 2021 00:26:54 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 1/3] inbox: streamline ->nntp_url Date: Thu, 16 Sep 2021 00:26:51 +0000 Message-Id: <20210916002653.12188-2-e@80x24.org> In-Reply-To: <20210916002653.12188-1-e@80x24.org> References: <20210916002653.12188-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: We no longer waste a precious hash slot for a per-Inbox {nntpserver} if it's only configured globally for all inboxes. --- lib/PublicInbox/Config.pm | 4 ++-- lib/PublicInbox/Inbox.pm | 9 +++------ lib/PublicInbox/WwwText.pm | 4 ++-- t/config.t | 13 +++++++++---- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index ee5322fe..5e7a9f2b 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -424,7 +424,7 @@ sub _fill_ibx { my ($self, $name) = @_; my $pfx = "publicinbox.$name"; my $ibx = {}; - for my $k (qw(watch nntpserver)) { + for my $k (qw(watch)) { my $v = $self->{"$pfx.$k"}; $ibx->{$k} = $v if defined $v; } @@ -451,7 +451,7 @@ sub _fill_ibx { # TODO: more arrays, we should support multi-value for # more things to encourage decentralization for my $k (qw(address altid nntpmirror coderepo hide listid url - infourl watchheader)) { + infourl watchheader nntpserver)) { my $v = $self->{"$pfx.$k"} // next; $ibx->{$k} = _array($v); } diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index b0bb9dcc..f234b96f 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -109,8 +109,6 @@ sub new { } else { delete $opts->{feedmax}; } - $opts->{nntpserver} ||= $pi_cfg->{'publicinbox.nntpserver'}; - # allow any combination of multi-line or comma-delimited hide entries my $hide = {}; if (defined(my $h = $opts->{hide})) { @@ -261,22 +259,21 @@ sub base_url { } sub nntp_url { - my ($self) = @_; + my ($self, $ctx) = @_; $self->{-nntp_url} ||= do { # no checking for nntp_usable here, we can point entirely # to non-local servers or users run by a different user - my $ns = $self->{nntpserver}; + my $ns = $self->{nntpserver} // + $ctx->{www}->{pi_cfg}->get_all('publicinbox.nntpserver'); my $group = $self->{newsgroup}; my @urls; if ($ns && $group) { - $ns = [ $ns ] if ref($ns) ne 'ARRAY'; @urls = map { my $u = m!\Anntps?://! ? $_ : "nntp://$_"; $u .= '/' if $u !~ m!/\z!; $u.$group; } @$ns; } - my $mirrors = $self->{nntpmirror}; if ($mirrors) { my @m; diff --git a/lib/PublicInbox/WwwText.pm b/lib/PublicInbox/WwwText.pm index fabe39f6..177d55e4 100644 --- a/lib/PublicInbox/WwwText.pm +++ b/lib/PublicInbox/WwwText.pm @@ -210,7 +210,7 @@ EOF defined(my $v = $ibx->{$k}) or next; $$txt .= "\t$k = $v\n"; } - $$txt .= "\tnntpmirror = $_\n" for (@{$ibx->nntp_url}); + $$txt .= "\tnntpmirror = $_\n" for (@{$ibx->nntp_url($ctx)}); _coderepo_config($ctx, $txt); 1; } @@ -343,7 +343,7 @@ EOM Example config snippet for mirrors: $cfg_link EOF if ($ibx->can('nntp_url')) { - my $nntp = $ibx->nntp_url; + my $nntp = $ibx->nntp_url($ctx); if (scalar @$nntp) { $$txt .= "\n"; $$txt .= @$nntp == 1 ? 'Newsgroup' : 'Newsgroups are'; diff --git a/t/config.t b/t/config.t index 877e5d5d..2b02f063 100644 --- a/t/config.t +++ b/t/config.t @@ -43,7 +43,6 @@ my ($tmpdir, $for_destroy) = tmpdir(); -primary_address => 'meta@public-inbox.org', 'name' => 'meta', -httpbackend_limiter => undef, - nntpserver => undef, }, "lookup matches expected output"); is($cfg->lookup('blah@example.com'), undef, @@ -60,7 +59,6 @@ my ($tmpdir, $for_destroy) = tmpdir(); 'name' => 'test', 'url' => [ 'http://example.com/test' ], -httpbackend_limiter => undef, - nntpserver => undef, }, "lookup matches expected output for test"); } @@ -99,20 +97,27 @@ EOF my $str = <new(\$str); my $ibx = $cfg->lookup_name('test'); - is($ibx->{nntpserver}, 'news.example.com', 'global NNTP server'); + is_deeply($ibx->nntp_url({ www => { pi_cfg => $cfg }}), + [ 'nntp://news.example.com/inbox.test' ], + 'nntp_url uses global NNTP server'); $str = <new(\$str); $ibx = $cfg->lookup_name('test'); - is($ibx->{nntpserver}, 'news.alt.example.com','per-inbox NNTP server'); + is_deeply($ibx->nntp_url({ www => { pi_cfg => $cfg }}), + [ 'nntp://news.alt.example.com/inbox.test' ], + 'nntp_url uses per-inbox NNTP server'); } # no obfuscate domains