... | ... |
@@ -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'); |
... | ... |
@@ -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 |
+ %> |
... | ... |
@@ -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 |
+%> |