package PublicInbox::Cgit;
use strict;
use PublicInbox::GitHTTPBackend;
+use PublicInbox::Git;
# not bothering with Exporter for a one-off
-*r = *PublicInbox::GitHTTPBackend::r;
*input_prepare = *PublicInbox::GitHTTPBackend::input_prepare;
*parse_cgi_headers = *PublicInbox::GitHTTPBackend::parse_cgi_headers;
*serve = *PublicInbox::GitHTTPBackend::serve;
-*static_result = *PublicInbox::GitHTTPBackend::static_result;
use warnings;
use PublicInbox::Qspawn;
-use Plack::MIME;
+use PublicInbox::WwwStatic qw(r);
sub locate_cgit ($) {
my ($pi_config) = @_;
pi_config => $pi_config,
}, $class;
- $pi_config->each_inbox(sub {}); # fill in -code_repos mapped to inboxes
+ $pi_config->fill_all; # fill in -code_repos mapped to inboxes
# some cgit repos may not be mapped to inboxes, so ensure those exist:
my $code_repos = $pi_config->{-code_repos};
# handle requests without spawning cgit iff possible:
if ($path_info =~ m!\A/(.+?)/($PublicInbox::GitHTTPBackend::ANY)\z!ox) {
my ($nick, $path) = ($1, $2);
- if (my $git = $self->{"\0$nick"}) {
+ if (my PublicInbox::Git $git = $self->{"\0$nick"}) {
return serve($env, $git, $path);
}
} elsif ($path_info =~ m!$self->{static}! &&
defined($cgit_data = $self->{cgit_data})) {
- my $f = $1;
- my $type = Plack::MIME->mime_type($f);
- return static_result($env, [], $cgit_data.$f, $type);
+ my $f = $cgit_data.$1; # {static} only matches leading slash
+ return PublicInbox::WwwStatic::response($env, [], $f);
}
my $cgi_env = { PATH_INFO => $path_info };