} // ($req ? croak("E: $@") : undef);
}
-sub try_cat {
- my ($path) = @_;
- open(my $fh, '<', $path) or return '';
- local $/;
- <$fh> // '';
-}
-
-sub cat_desc ($) {
- my $desc = try_cat($_[0]);
- local $/ = "\n";
- chomp $desc;
- utf8::decode($desc);
- $desc =~ s/\s+/ /smg;
- $desc eq '' ? undef : $desc;
-}
-
sub description {
my ($self) = @_;
- ($self->{description} //= cat_desc("$self->{inboxdir}/description")) //
+ ($self->{description} //=
+ PublicInbox::Git::cat_desc("$self->{inboxdir}/description")) //
'($INBOX_DIR/description missing)';
}
sub cloneurl {
my ($self) = @_;
$self->{cloneurl} // do {
- my $s = try_cat("$self->{inboxdir}/cloneurl");
- my @urls = split(/\s+/s, $s);
+ my @urls = split(/\s+/s,
+ PublicInbox::Git::try_cat("$self->{inboxdir}/cloneurl"));
scalar(@urls) ? ($self->{cloneurl} = \@urls) : undef;
} // [];
}
$url .= '/' if $url !~ m!/\z!;
return $url .= $self->{name} . '/';
}
- # called from a non-PSGI environment (e.g. NNTP/POP3):
+ # called from a non-PSGI environment or cross-inbox environment
+ # where multiple inboxes can have different domains
my $url = $self->{url} // return undef;
$url = $url->[0] // return undef;
# expand protocol-relative URLs to HTTPS if we're
$smsg ? msg_by_smsg($self, $smsg) : msg_by_path($self, mid2path($mid));
}
-sub recent {
- my ($self, $opts, $after, $before) = @_;
- $self->over->recent($opts, $after, $before);
-}
-
sub modified {
my ($self) = @_;
if (my $over = $self->over) {
sprintf('-%x', uidvalidity($self) // 0)
}
+sub thing_type { 'public inbox' }
+
1;