X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FPlack%2FApp%2FGruntmaster.pm;h=503d0c426a1c5e57c2dc3cd1af6ffc7d94c39b04;hb=efbbd5da60b47ef96f82700c18723186ab6c8865;hp=c8b04f3873a9bace214ef2620b3e6a87259dc0cf;hpb=e4d5bdf52a921932551c051df63ea8087d2037da;p=gruntmaster-page.git diff --git a/lib/Plack/App/Gruntmaster.pm b/lib/Plack/App/Gruntmaster.pm index c8b04f3..503d0c4 100644 --- a/lib/Plack/App/Gruntmaster.pm +++ b/lib/Plack/App/Gruntmaster.pm @@ -52,6 +52,8 @@ use constant FORMAT_EXTENSION => { use constant NOT_FOUND => [404, ['Content-Type' => 'text/plain'], ['Not found']]; use constant FORBIDDEN => [401, ['Content-Type' => 'text/plain', 'WWW-Authenticate' => 'Basic realm="Gruntmaster 6000"'], ['Forbidden']]; +sub development() { ($ENV{PLACK_ENV} // 'development') eq 'development' } + my $env; sub db { $env->{'gruntmaster.dbic'} } @@ -94,14 +96,14 @@ sub dispatch_request{ my $css = read_file "css/themes/$theme.css"; $css .= read_file $_ for ; my @headers = ('X-Forever' => 1, 'Cache-Control' => 'public, max-age=604800', 'Content-Type' => 'text/css'); - [200, \@headers, [CSS::Minifier::XS::minify $css]] + [200, \@headers, [development ? $css : CSS::Minifier::XS::minify $css]] }, sub (/js.js) { my $js; $js .= read_file $_ for ; my @headers = ('X-Forever' => 1, 'Cache-Control' => 'public, max-age=604800', 'Content-Type' => 'application/javascript'); - [200, \@headers, [JavaScript::Minifier::XS::minify $js]] + [200, \@headers, [development ? $js : JavaScript::Minifier::XS::minify $js]] }, sub (/src/:job) { @@ -123,24 +125,21 @@ sub dispatch_request{ response_filter { return shift } }, - sub () { + sub (?:format~) { + my $format = lc $_{format} // ''; response_filter { my ($r) = @_; return $r if ref $r ne 'Plack::App::Gruntmaster::Response'; - return [200, ['Content-Type' => 'application/json', 'X-Forever' => 1], [encode 'UTF-8', encode_json $r->{params}]] if $env->{HTTP_ACCEPT} =~ m,^\s*application/json\s*$,g; + return [200, ['Content-Type' => 'application/json'], [encode_json $r->{params}]] if $format eq 'json'; my $ret = render $r->{template}, 'en', title => $r->{title}, %{$r->{params}}; [200, ['Content-Type' => 'text/html'], [encode 'UTF-8', $ret]] }, }, - sub (/st/) { - response st => 'Standings', { st => [db->standings] } - }, - sub (/st/:contest) { response st => 'Standings', { - st => [ db->standings($_{contest}) ], - problems => [map { $_->problem } contest->contest_problems] + st => [ contest->standings ], + problems => [map { $_->problem } contest->contest_problems], } },