]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WWW.pm
wwwaltid: inform users to use POST instead of GET
[public-inbox.git] / lib / PublicInbox / WWW.pm
index 2434f2f581b2b0fbd1d48d1a08881bf0a1c1187b..275e509f2f1136ad62d129e114b245f9c8b75cd4 100644 (file)
@@ -65,6 +65,8 @@ sub call {
                        my ($epoch, $path) = ($2, $3);
                        return invalid_inbox($ctx, $1) ||
                                serve_git($ctx, $epoch, $path);
+               } elsif ($path_info =~ m!$INBOX_RE/(\w+)\.sql\.gz\z!o) {
+                       return get_altid_dump($ctx, $1, $2);
                } elsif ($path_info =~ m!$INBOX_RE/!o) {
                        return invalid_inbox($ctx, $1) || mbox_results($ctx);
                }
@@ -123,6 +125,8 @@ sub call {
                get_vcs_object($ctx, $1, $2, $3);
        } elsif ($path_info =~ m!$INBOX_RE/($OID_RE)/s\z!o) {
                r301($ctx, $1, $2, 's/');
+       } elsif ($path_info =~ m!$INBOX_RE/(\w+)\.sql\.gz\z!o) {
+               get_altid_dump($ctx, $1, $2);
        # convenience redirects order matters
        } elsif ($path_info =~ m!$INBOX_RE/([^/]{2,})\z!o) {
                r301($ctx, $1, $2);
@@ -150,8 +154,8 @@ sub preload {
                require PublicInbox::Search;
                PublicInbox::Search::load_xapian();
        };
-       foreach (qw(PublicInbox::SearchView PublicInbox::MboxGz)) {
-               eval "require $_;";
+       for (qw(SearchView MboxGz WwwAltId)) {
+               eval "require PublicInbox::$_;";
        }
        if (ref($self)) {
                my $pi_config = $self->{pi_config};
@@ -168,6 +172,7 @@ sub preload {
 
 sub preload_inbox {
        my $ibx = shift;
+       $ibx->altid_map;
        $ibx->cloneurl;
        $ibx->description;
        $ibx->base_url;
@@ -301,6 +306,14 @@ sub get_vcs_object ($$$;$) {
        PublicInbox::ViewVCS::show($ctx, $oid, $filename);
 }
 
+sub get_altid_dump {
+       my ($ctx, $inbox, $altid_pfx) =@_;
+       my $r404 = invalid_inbox($ctx, $inbox);
+       return $r404 if $r404;
+       eval { require PublicInbox::WwwAltId } or return need($ctx, 'sqlite3');
+       PublicInbox::WwwAltId::sqldump($ctx, $altid_pfx);
+}
+
 sub need {
        my ($ctx, $extra) = @_;
        my $msg = <<EOF;