]> Sergey Matveev's repositories - public-inbox.git/commitdiff
www: serve $INBOX_DIR/description as $INBOX_URL/description
authorEric Wong <e@yhbt.net>
Tue, 4 Feb 2020 04:44:22 +0000 (04:44 +0000)
committerEric Wong <e@yhbt.net>
Tue, 4 Feb 2020 21:39:51 +0000 (21:39 +0000)
Instead of serving $INBOX_DIR/all.git/description, since
$INBOX_DIR/all.git/description is not described in the
default message when it's missing.

lib/PublicInbox/WWW.pm
t/plack.t
t/psgi_v2.t

index 3ce7cc2a7b6ddb2ef74616898e60accd3f92b0ae..02b5ded32e9a2950508ef39ef5d7697603eebf1b 100644 (file)
@@ -85,6 +85,8 @@ sub call {
                invalid_inbox($ctx, $1) || get_atom($ctx);
        } elsif ($path_info =~ m!$INBOX_RE/new\.html\z!o) {
                invalid_inbox($ctx, $1) || get_new($ctx);
+       } elsif ($path_info =~ m!$INBOX_RE/description\z!o) {
+               get_description($ctx, $1);
        } elsif ($path_info =~ m!$INBOX_RE/(?:(?:git/)?([0-9]+)(?:\.git)?/)?
                                ($PublicInbox::GitHTTPBackend::ANY)\z!ox) {
                my ($epoch, $path) = ($2, $3);
@@ -621,4 +623,13 @@ sub get_css ($$$) {
        [ 200, $h, [ $css ] ];
 }
 
+sub get_description {
+       my ($ctx, $inbox) = @_;
+       invalid_inbox($ctx, $inbox) || do {
+               my $d = $ctx->{-inbox}->description . "\n";
+               [ 200, [ 'Content-Length', bytes::length($d),
+                       'Content-Type', 'text/plain' ], [ $d ] ];
+       };
+}
+
 1;
index a9a053ed0db420697840707222e2f6f2f4ace779..e23658fd3003d56d06acc887dd6c9effd272096e 100644 (file)
--- a/t/plack.t
+++ b/t/plack.t
@@ -189,6 +189,8 @@ test_psgi($app, sub {
        like($body, qr/<title>test for public-inbox/,
                "set title in XML feed");
        like($body, qr/zzzzzz/, 'body included');
+       $res = $cb->(GET($pfx . '/description'));
+       like($res->content, qr/test for public-inbox/, 'got description');
 });
 
 test_psgi($app, sub {
index 2ecd7458e48eee28467194faa01f14161449397e..fdd6969f8034322a4e2fcffde8e5627e6d164c7d 100644 (file)
@@ -58,6 +58,9 @@ my $www = PublicInbox::WWW->new($config);
 my ($res, $raw, @from_);
 test_psgi(sub { $www->call(@_) }, sub {
        my ($cb) = @_;
+       $res = $cb->(GET('/v2test/description'));
+       like($res->content, qr!\$INBOX_DIR/description missing!,
+               'got v2 description missing message');
        $res = $cb->(GET('/v2test/a-mid@b/raw'));
        $raw = $res->content;
        like($raw, qr/^hello world$/m, 'got first message');