From 923655e1a9f847c21d3fdb254f58e705f4dd4da9 Mon Sep 17 00:00:00 2001 From: Marius Gavrilescu Date: Wed, 5 Feb 2014 14:38:42 +0200 Subject: [PATCH] Add Page::Src --- lib/Gruntmaster/Page/Src.pm | 30 ++++++++++++++++++++++++++++++ lib/Plack/App/Gruntmaster.pm | 1 + 2 files changed, 31 insertions(+) create mode 100644 lib/Gruntmaster/Page/Src.pm diff --git a/lib/Gruntmaster/Page/Src.pm b/lib/Gruntmaster/Page/Src.pm new file mode 100644 index 0000000..77a5cd2 --- /dev/null +++ b/lib/Gruntmaster/Page/Src.pm @@ -0,0 +1,30 @@ +package Gruntmaster::Page::Src; + +use 5.014000; +use strict; +use warnings; +use Gruntmaster::Page::Base; +our @ISA = qw/Gruntmaster::Page::Base/; +our $VERSION = '0.001'; + +use constant CONTENT_TYPES => +{ + c => 'text/x-csrc', + cpp => 'text/x-c++src', + cs => 'text/x-chsarp', # Used by GNOME. Not in mime.types. + java => 'text/x-java', + pas => 'text/x-pascal', + pl => 'text/x-perl', + py => 'text/x-python', +}; + +sub generate{ + my ($self, $format, $logger, $ct, $job, $ext) = @_; + debug $logger => "Contest is $ct, job is $job and extension is $ext"; + local $Gruntmaster::Data::contest = $ct if $ct; + + [200, ['Content-Type' => CONTENT_TYPES->{$ext}, 'Cache-Control' => 'max-age=604800'], [job_inmeta($job)->{files}{prog}{content}] ] +} + +sub variants{ [[file => 1, undef, undef, undef, undef, undef]] } + +1 diff --git a/lib/Plack/App/Gruntmaster.pm b/lib/Plack/App/Gruntmaster.pm index 5530c73..5343268 100644 --- a/lib/Plack/App/Gruntmaster.pm +++ b/lib/Plack/App/Gruntmaster.pm @@ -69,6 +69,7 @@ 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'; -- 2.39.2