]> iEval git - gruntmaster-page.git/blobdiff - lib/Plack/App/Gruntmaster.pm
Move display mangling to templates, add read API
[gruntmaster-page.git] / lib / Plack / App / Gruntmaster.pm
index 5530c73dab29dd2eab00d60d715f73e2dfbf3b40..f3da5719fe584be22e0c3600ae9307ffe29e0e8a 100644 (file)
@@ -10,6 +10,9 @@ our $VERSION = '5999.000_001';
 use File::Slurp qw/read_file/;
 use HTTP::Negotiate qw/choose/;
 use Plack::Request;
+use Gruntmaster::Page::Log;
+use Gruntmaster::Page::Pb::Entry;
+use Gruntmaster::Page::Generic;
 
 my %handlers;
 
@@ -22,7 +25,7 @@ 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') {
@@ -35,7 +38,7 @@ sub call {
                        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] ]
+                       return [200, ['Content-Type' => 'text/html', 'Content-Language' => $lang, 'Vary' => 'Accept-Language', 'X-Forever' => 1, 'Cache-Control' => 'max-age=300'], [$html] ]
                }
        }
 
@@ -58,20 +61,37 @@ BEGIN{
        my $word = qr,(\w+),a;
        my $ct = qr,(?:\/ct/$word)?,a;
 
-       get qr,/css/$word, => 'CSS';
-       get qr,/js, => 'JS';
+       sub generic {
+               my ($thing, $ct, $fs) = @_;
+               $ct //= '', $fs //= '';
+               my $pkg = ucfirst $thing;
+               get qr,$ct/$thing/, => $pkg;
+               get qr,$ct/$thing/$word$fs, => "${pkg}::Entry";
 
-       get qr,/ct/, => 'Ct';
-       get qr,/ct/$word, => 'Ct::Entry';
-       get qr,/us/, => 'Us';
-       get qr,/us/$word, => 'Us::Entry';
+               get  qr,$ct/$thing/read,         => "${pkg}::Read";
+#              post qr,$ct/$thing/$word/create, => "${pkg}::Entry::Create";
+               get  qr,$ct/$thing/$word/read,   => "${pkg}::Entry::Read";
+#              post qr,$ct/$thing/$word/update, => "${pkg}::Entry::Update";
+#              post qr,$ct/$thing/$word/delete, => "${pkg}::Entry::Delete";
+       }
+
+       get qr,/css/$word\.css, => 'CSS';
+       get qr,/js\.js, => 'JS';
+
+       generic 'us';
+       generic ct => '', '/';
+       generic pb => $ct;
+       #generic log => $ct;
 
        get qr,$ct/log/(\d+)?, => 'Log';
        get qr,$ct/log/st, => 'St';
        get qr,$ct/log/job/$word, => 'Log::Entry';
-       get qr,$ct/submit, => 'Submit';
-       get qr,$ct/pb/, => 'Pb';
-       get qr,$ct/pb/$word, => 'Pb::Entry';
+       get qr,$ct/log/job/$word/read, => 'Log::Entry::Read';
+       get qr,$ct/log/src/$word\.$word, => 'Src';
+       post qr,$ct/pb/$word/submit, => 'Submit';
+
+       post qr,/action/register, => 'Register';
+       post qr,/action/passwd, => 'Passwd';
 }
 
 1;
This page took 0.022455 seconds and 4 git commands to generate.