X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FPlack%2FApp%2FGruntmaster.pm;h=8aa42d276d398e0e381352ac199b8111dde104e4;hb=0f623f3d41b33606db73af07c12161320ed4aa93;hp=9284acc1a8b1eae97cd01e579b894d3d4e647481;hpb=9694ccf33654e0cc01a2fa9390b76eb1a276d304;p=plack-app-gruntmaster.git diff --git a/lib/Plack/App/Gruntmaster.pm b/lib/Plack/App/Gruntmaster.pm index 9284acc..8aa42d2 100644 --- a/lib/Plack/App/Gruntmaster.pm +++ b/lib/Plack/App/Gruntmaster.pm @@ -29,6 +29,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 +44,7 @@ use constant FORMAT_EXTENSION => { CPP => 'cpp', GCCGO => 'go', GOLANG => 'go', + GOLFSCRIPT => 'gs', HASKELL => 'hs', MONO => 'cs', JAVA => 'java', @@ -114,10 +116,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]] }, }, @@ -182,7 +185,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) {