Showing 3 changed files with 23 additions and 19 deletions
+1 -1
lib/Gitprep.pm
... ...
@@ -194,7 +194,7 @@ sub startup {
194 194
       $r->get('/blobdiff/(#diff)/(*file)')->name('blobdiff');
195 195
       
196 196
       # Raw
197
-      $r->get('/raw/:rev/(*file)', {file => undef})->to('controller#raw');
197
+      $r->get('/raw/:rev/(*file)', {file => undef})->name('raw');
198 198
       
199 199
       # Archive
200 200
       $r->get('/archive/(:rev).(tar.gz')->name('archive')->to(archive_type => 'tar');
+8
templates/auto/a.html.ep
... ...
@@ -0,0 +1,8 @@
1
+    <%
2
+      use Encode 'encode';
3
+      
4
+      $self->res->headers->content_type('text/plain;charset=UTF-8');
5
+      $self->res->body(encode('UTF-8', 'あ'));
6
+      $self->rendered;
7
+      return;
8
+    %>
+14 -18
lib/Gitprep/Controller.pm → templates/raw.html.ep
... ...
@@ -1,17 +1,12 @@
1
-package Gitprep::Controller;
2
-use Mojo::Base 'Mojolicious::Controller';
3
-
4
-sub raw {
5
-  my $self = shift;
6
-  
1
+<%
7 2
   # Parameters
8
-  my $user = $self->param('user');
9
-  my $project = $self->param('project');
10
-  my $rev = $self->param('rev');
11
-  my $file = $self->param('file');
3
+  my $user = param('user');
4
+  my $project = param('project');
5
+  my $rev = param('rev');
6
+  my $file = param('file');
12 7
 
13 8
   # Git
14
-  my $git = $self->app->git;
9
+  my $git = app->git;
15 10
   
16 11
   # Blob raw
17 12
   my $blob_raw = $git->blob_raw($user, $project, $rev, $file);
... ...
@@ -20,7 +15,7 @@ sub raw {
20 15
   my $type = $git->blob_contenttype($user, $project, $rev, $file);
21 16
 
22 17
   # Convert text/* content type to text/plain
23
-  if ($self->app->config->{basic}{prevent_xss} &&
18
+  if (app->config->{basic}{prevent_xss} &&
24 19
     ($type =~ m#^text/[a-z]+\b(.*)$# ||
25 20
     ($type =~ m#^[a-z]+/[a-z]\+xml\b(.*)$#)))
26 21
   {
... ...
@@ -35,17 +30,18 @@ sub raw {
35 30
   elsif ($type =~ m/^text\//) { $file_name .= '.txt' }
36 31
   
37 32
   # Content disposition
38
-  my $sandbox = $self->app->config->{basic}{prevent_xss} &&
33
+  my $sandbox = app->config->{basic}{prevent_xss} &&
39 34
     $type !~ m#^(?:text/[a-z]+|image/(?:gif|png|jpeg))(?:[ ;]|$)#;
40 35
   my $content_disposition = $sandbox ? 'attachment' : 'inline';
41 36
   $content_disposition .= "; filename=$file_name";
42 37
   
43 38
   # Response
39
+  $self->res->code(200);
44 40
   $self->res->headers->content_disposition($content_disposition);
45 41
   $self->res->headers->content_type($type);
42
+  $self->res->body($blob_raw);
43
+  $self->rendered;
44
+  $self->stash->{'mojo.routed'} = 1;
46 45
   
47
-  $self->render(data => $blob_raw);
48
-}
49
-
50
-1;
51
-
46
+  return;
47
+%>