]> iEval git - plack-app-gruntmaster.git/blobdiff - lib/Plack/App/Gruntmaster.pm
Do not load Email:: modules as they are no longer needed
[plack-app-gruntmaster.git] / lib / Plack / App / Gruntmaster.pm
index f401e3f5d403272e4ad971388ffea3755ae70428..c02e7dd3f023cbdbd84c402f36cc0d85cabbcd06 100644 (file)
@@ -14,9 +14,6 @@ use Web::Simple;
 use Gruntmaster::Data;
 use Plack::App::Gruntmaster::HTML;
 
-use Email::Sender::Simple qw/sendmail/;
-use Email::Simple;
-
 use warnings NONFATAL => 'all';
 no warnings 'illegalproto';
 
@@ -29,6 +26,7 @@ use constant CONTENT_TYPES => +{
        cpp => 'text/x-c++src',
        cs => 'text/x-csharp', # Used by GNOME. Not in mime.types.
        go => 'text/plain', # ?
+       gs => 'text/plain',
        hs => 'text/x-haskell',
        java => 'text/x-java',
        pas => 'text/x-pascal',
@@ -43,6 +41,7 @@ use constant FORMAT_EXTENSION => {
        CPP => 'cpp',
        GCCGO => 'go',
        GOLANG => 'go',
+       GOLFSCRIPT => 'gs',
        HASKELL => 'hs',
        MONO => 'cs',
        JAVA => 'java',
@@ -114,10 +113,11 @@ sub dispatch_request{
                        response_filter {
                                my ($r) = @_;
                                return $r if ref $r ne 'Plack::App::Gruntmaster::Response';
-                               my @hdrs = ('X-Forever' => 1, 'Cache-Control' => "$privacy, max-age=$r->{maxage}");
-                               push @hdrs, Vary => 'Authorization' if $privacy eq 'private';
+                               my $vary = 'X-Static';
+                               $vary .= ', Authorization' if $privacy eq 'private';
+                               my @hdrs = ('X-Forever' => 1, 'Cache-Control' => "$privacy, max-age=$r->{maxage}", Vary => $vary);
                                return [200, ['Content-Type' => 'application/json; charset=utf-8', @hdrs], [encode_json $r->{params}]] if $format eq 'json';
-                               my $ret = render $r->{template}, 'en', title => $r->{title}, %{$r->{params}};
+                               my $ret = render $r->{template}, 'en', title => $r->{title}, %{$r->{params}}, maybe static => $env->{HTTP_X_STATIC};
                                [200, ['Content-Type' => 'text/html; charset=utf-8', @hdrs], [encode 'UTF-8', $ret]]
                        },
                },
@@ -149,7 +149,7 @@ sub dispatch_request{
                sub (/ct/  + ?:owner~)                            { response ct => 'Contests', db->contest_list(%_), 300 },
                sub (/log/ + ?:contest~&:owner~&:page~&:problem~&:private~&:result~) {
                        forbid $_{private};
-                       response log => 'Job list', {%{db->job_list(%_)}, maybe contest => $_{contest},}, 5
+                       response log => 'Job list', db->job_list(%_), 5
                },
                sub (/pb/  + ?:owner~&:contest~&:private~)                  {
                        forbid $_{private};
@@ -173,7 +173,7 @@ sub dispatch_request{
                                forbid !remote_user;
                                $privacy = 'private';
                        }
-                       response pb_entry => problem->name, {%{db->problem_entry($_{problem}, $_{contest}, remote_user && remote_user->id)}, maybe contest => $_{contest}}, $_{contest} ? 10 : ();
+                       response pb_entry => problem->name, db->problem_entry($_{problem}, $_{contest}, remote_user && remote_user->id), $_{contest} ? 10 : ();
                },
                sub (/sol/:problem) {
                        forbid problem->private;
@@ -182,7 +182,7 @@ sub dispatch_request{
 
                sub (/) { redispatch_to '/index' },
                sub (/favicon.ico) { redirect '/static/favicon.ico' },
-               sub (/:article) { [200, ['Content-Type' => 'text/html; charset=utf-8', 'Cache-Control' => 'public, max-age=3600', 'X-Forever' => 1], [render_article $_{article}, 'en']] }
+               sub (/:article) { [200, ['Content-Type' => 'text/html; charset=utf-8', 'Cache-Control' => 'public, max-age=3600', 'X-Forever' => 1, Vary => 'X-Static'], [render_article $_{article}, 'en', maybe static => $env->{HTTP_X_STATIC}]] }
        },
 
        sub (POST) {
This page took 0.019442 seconds and 4 git commands to generate.