]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/WWW.pm
treewide: replace {-inbox} with {ibx} for consistency
[public-inbox.git] / lib / PublicInbox / WWW.pm
index e4ad515a4d341d03ef5014f18d0a783c44c8fb31..6bae2190ac5f3f4d0e040fb787cc951e2402c87d 100644 (file)
@@ -29,7 +29,7 @@ our $INBOX_RE = qr!\A/([\w\-][\w\.\-]*)!;
 our $MID_RE = qr!([^/]+)!;
 our $END_RE = qr!(T/|t/|t\.mbox(?:\.gz)?|t\.atom|raw|)!;
 our $ATTACH_RE = qr!([0-9][0-9\.]*)-($PublicInbox::Hval::FN)!;
-our $OID_RE = qr![a-f0-9]{7,40}!;
+our $OID_RE = qr![a-f0-9]{7,}!;
 
 sub new {
        my ($class, $pi_config) = @_;
@@ -77,8 +77,12 @@ sub call {
        }
 
        # top-level indices and feeds
-       if ($path_info eq '/' || $path_info eq '/manifest.js.gz') {
-               www_listing($self)->call($env);
+       if ($path_info eq '/') {
+               require PublicInbox::WwwListing;
+               PublicInbox::WwwListing->response($ctx);
+       } elsif ($path_info eq '/manifest.js.gz') {
+               require PublicInbox::ManifestJsGz;
+               PublicInbox::ManifestJsGz->response($ctx);
        } elsif ($path_info =~ m!$INBOX_RE\z!o) {
                invalid_inbox($ctx, $1) || r301($ctx, $1);
        } elsif ($path_info =~ m!$INBOX_RE(?:/|/index\.html)?\z!o) {
@@ -171,7 +175,6 @@ sub preload {
                }
                $self->cgit;
                $self->stylesheets_prepare($_) for ('', '../', '../../');
-               $self->www_listing;
                $self->news_www;
                $pi_config->each_inbox(\&preload_inbox);
        }
@@ -207,9 +210,10 @@ sub news_cgit_fallback ($) {
 # returns undef if valid, array ref response if invalid
 sub invalid_inbox ($$) {
        my ($ctx, $inbox) = @_;
-       my $ibx = $ctx->{www}->{pi_config}->lookup_name($inbox);
+       my $ibx = $ctx->{www}->{pi_config}->lookup_name($inbox) //
+                       $ctx->{www}->{pi_config}->lookup_ei($inbox);
        if (defined $ibx) {
-               $ctx->{-inbox} = $ibx;
+               $ctx->{ibx} = $ibx;
                return;
        }
 
@@ -227,11 +231,11 @@ sub invalid_inbox_mid {
        return $ret if $ret;
 
        my $mid = $ctx->{mid} = uri_unescape($mid_ue);
-       my $ibx = $ctx->{-inbox};
+       my $ibx = $ctx->{ibx};
        if ($mid =~ m!\A([a-f0-9]{2})([a-f0-9]{38})\z!) {
                my ($x2, $x38) = ($1, $2);
                # this is horrifically wasteful for legacy URLs:
-               my $str = $ctx->{-inbox}->msg_by_path("$x2/$x38") or return;
+               my $str = $ctx->{ibx}->msg_by_path("$x2/$x38") or return;
                my $s = PublicInbox::Eml->new($str);
                $mid = PublicInbox::MID::mid_clean($s->header_raw('Message-ID'));
                return r301($ctx, $inbox, mid_escape($mid));
@@ -282,7 +286,7 @@ sub get_mid_html {
 # /$INBOX/$MESSAGE_ID/t/
 sub get_thread {
        my ($ctx, $flat) = @_;
-       $ctx->{-inbox}->over or return need($ctx, 'Overview');
+       $ctx->{ibx}->over or return need($ctx, 'Overview');
        $ctx->{flat} = $flat;
        require PublicInbox::View;
        PublicInbox::View::thread_html($ctx);
@@ -301,9 +305,8 @@ sub get_text {
 }
 
 # show git objects (blobs and commits)
-# /$INBOX/_/$OBJECT_ID/show
-# /$INBOX/_/${OBJECT_ID}_${FILENAME}
-# KEY may contain slashes
+# /$INBOX/$GIT_OBJECT_ID/s/
+# /$INBOX/$GIT_OBJECT_ID/s/$FILENAME
 sub get_vcs_object ($$$;$) {
        my ($ctx, $inbox, $oid, $filename) = @_;
        my $r404 = invalid_inbox($ctx, $inbox);
@@ -336,7 +339,7 @@ EOF
 # especially on older systems.  Stick to zlib since that's what git uses.
 sub get_thread_mbox {
        my ($ctx, $sfx) = @_;
-       my $over = $ctx->{-inbox}->over or return need($ctx, 'Overview');
+       my $over = $ctx->{ibx}->over or return need($ctx, 'Overview');
        require PublicInbox::Mbox;
        PublicInbox::Mbox::thread_mbox($ctx, $over, $sfx);
 }
@@ -345,7 +348,7 @@ sub get_thread_mbox {
 # /$INBOX/$MESSAGE_ID/t.atom             -> thread as Atom feed
 sub get_thread_atom {
        my ($ctx) = @_;
-       $ctx->{-inbox}->over or return need($ctx, 'Overview');
+       $ctx->{ibx}->over or return need($ctx, 'Overview');
        require PublicInbox::Feed;
        PublicInbox::Feed::generate_thread_atom($ctx);
 }
@@ -410,11 +413,11 @@ sub legacy_redirects {
 
 sub r301 {
        my ($ctx, $inbox, $mid_ue, $suffix) = @_;
-       my $ibx = $ctx->{-inbox};
+       my $ibx = $ctx->{ibx};
        unless ($ibx) {
                my $r404 = invalid_inbox($ctx, $inbox);
                return $r404 if $r404;
-               $ibx = $ctx->{-inbox};
+               $ibx = $ctx->{ibx};
        }
        my $url = $ibx->base_url($ctx->{env});
        my $qs = $ctx->{env}->{QUERY_STRING};
@@ -451,7 +454,7 @@ sub msg_page {
 sub serve_git {
        my ($ctx, $epoch, $path) = @_;
        my $env = $ctx->{env};
-       my $ibx = $ctx->{-inbox};
+       my $ibx = $ctx->{ibx};
        my $git = defined $epoch ? $ibx->git_epoch($epoch) : $ibx->git;
        $git ? PublicInbox::GitHTTPBackend::serve($env, $git, $path) : r404();
 }
@@ -459,7 +462,7 @@ sub serve_git {
 sub mbox_results {
        my ($ctx) = @_;
        if ($ctx->{env}->{QUERY_STRING} =~ /(?:\A|[&;])q=/) {
-               $ctx->{-inbox}->search or return need($ctx, 'search');
+               $ctx->{ibx}->isrch or return need($ctx, 'search');
                require PublicInbox::SearchView;
                return PublicInbox::SearchView::mbox_results($ctx);
        }
@@ -497,21 +500,13 @@ sub cgit {
        }
 }
 
-sub www_listing {
-       my ($self) = @_;
-       $self->{www_listing} ||= do {
-               require PublicInbox::WwwListing;
-               PublicInbox::WwwListing->new($self);
-       }
-}
-
 # GET $INBOX/manifest.js.gz
 sub get_inbox_manifest ($$$) {
        my ($ctx, $inbox, $key) = @_;
        my $r404 = invalid_inbox($ctx, $inbox);
        return $r404 if $r404;
-       require PublicInbox::WwwListing;
-       PublicInbox::WwwListing::js($ctx->{env}, [$ctx->{-inbox}]);
+       require PublicInbox::ManifestJsGz;
+       PublicInbox::ManifestJsGz->response($ctx);
 }
 
 sub get_attach {
@@ -647,7 +642,7 @@ sub get_css ($$$) {
        my $css = $css_map->{$key};
        if (!defined($css) && $key eq 'userContent') {
                my $env = $ctx->{env};
-               $css = PublicInbox::UserContent::sample($ctx->{-inbox}, $env);
+               $css = PublicInbox::UserContent::sample($ctx->{ibx}, $env);
        }
        defined $css or return r404();
        my $h = [ 'Content-Length', bytes::length($css),
@@ -659,7 +654,7 @@ sub get_css ($$$) {
 sub get_description {
        my ($ctx, $inbox) = @_;
        invalid_inbox($ctx, $inbox) || do {
-               my $d = $ctx->{-inbox}->description . "\n";
+               my $d = $ctx->{ibx}->description . "\n";
                [ 200, [ 'Content-Length', bytes::length($d),
                        'Content-Type', 'text/plain' ], [ $d ] ];
        };