]> iEval git - plack-app-gruntmaster.git/blobdiff - lib/Plack/App/Gruntmaster.pm
Add register and passwd actions
[plack-app-gruntmaster.git] / lib / Plack / App / Gruntmaster.pm
index 60ab49f963b184207cdbf6e507c6e5b1b13bff52..66f86fe47e83052ef3b6feee560687fae2f4f6fb 100644 (file)
@@ -7,6 +7,7 @@ use parent qw/Plack::Component/;
 no if $] >= 5.017011, warnings => 'experimental::smartmatch';
 our $VERSION = '5999.000_001';
 
+use File::Slurp qw/read_file/;
 use HTTP::Negotiate qw/choose/;
 use Plack::Request;
 
@@ -21,7 +22,21 @@ sub call {
                my @args;
                next unless @args = $r->path =~ m/^$re$/a;
                my $format = choose $obj->variants, $r->headers;
-               return $obj->generate($format, $env->{'psgix.logger'}, map { $_ // '' } @args);
+               return $obj->generate($format, $env, map { $_ // '' } @args);
+       }
+
+       if ($r->method eq 'GET' || $r->method eq 'HEAD') {
+               my $article = $r->path eq '/' ? '/index' : $r->path;
+               $article = substr $article, 1;
+               $article =~ tr,/,_,;
+               my @variants = grep { !/\.title$/ } <a/$article.*>;
+               if (@variants) {
+                       my $lang = choose [ map { [$_, 1, 'text/html', undef, undef, $_, undef] } map { /\.(.+)$/ } @variants ], $r->headers;
+                       my $content = read_file "a/$article.$lang";
+                       my $title = read_file "a/$article.$lang.title";
+                       my $html = Gruntmaster::Page::Base::header($lang, $title) . $content . Gruntmaster::Page::Base::footer($lang);
+                       return [200, ['Content-Type' => 'text/html', 'Content-Language' => $lang, 'Vary' => 'Accept-Language'], [$html] ]
+               }
        }
 
        [404, ['Content-Type' => 'text/plain'], ['Not found']]
@@ -54,9 +69,13 @@ BEGIN{
        get qr,$ct/log/(\d+)?, => 'Log';
        get qr,$ct/log/st, => 'St';
        get qr,$ct/log/job/$word, => 'Log::Entry';
+       get qr,$ct/log/src/$word\.$word, => 'Src';
        get qr,$ct/submit, => 'Submit';
        get qr,$ct/pb/, => 'Pb';
        get qr,$ct/pb/$word, => 'Pb::Entry';
+
+       post qr,/action/register, => 'Register';
+       post qr,/action/passwd, => 'Passwd';
 }
 
 1;
This page took 0.02314 seconds and 4 git commands to generate.