require PublicInbox::Git;
use PublicInbox::GitHTTPBackend;
use PublicInbox::UserContent;
+use PublicInbox::WwwStatic qw(r path_info_raw);
# TODO: consider a routing tree now that we have more endpoints:
our $INBOX_RE = qr!\A/([\w\-][\w\.\-]*)!;
PublicInbox::WWW->new->call($req->env);
}
-# PATH_INFO is decoded, and we want the undecoded original
-my %path_re_cache;
-sub path_info_raw ($) {
- my ($env) = @_;
- my $sn = $env->{SCRIPT_NAME};
- my $re = $path_re_cache{$sn} ||= do {
- $sn = '/'.$sn unless index($sn, '/') == 0;
- $sn =~ s!/\z!!;
- qr!\A(?:https?://[^/]+)?\Q$sn\E(/[^\?\#]+)!;
- };
- $env->{REQUEST_URI} =~ $re ? $1 : $env->{PATH_INFO};
-}
-
sub call {
my ($self, $env) = @_;
my $ctx = { env => $env, www => $self };
}
}
elsif ($method !~ /\AGET|HEAD\z/) {
- return r(405, 'Method Not Allowed');
+ return r(405);
}
# top-level indices and feeds
require PublicInbox::ExtMsg;
return PublicInbox::ExtMsg::ext_msg($ctx);
}
- r(404, 'Not Found');
+ r(404);
}
-# simple response for errors
-sub r { [ $_[0], ['Content-Type' => 'text/plain'], [ join(' ', @_, "\n") ] ] }
-
sub news_cgit_fallback ($) {
my ($ctx) = @_;
my $www = $ctx->{www};