GyazoサーバをMojolicious::Liteで書いた

404 Not Found - ゆーすけべー日記 より
Gyazoクライアント側の仕様が変わった*1ので、Mojolicious::Liteで書いてみた。手軽に書けるのがMojolicious::Liteのいいところ。
Mojo::Utilのmd5_sum()とDigest::MD5のどちらを使うべきが迷うところ。だけど、Mojo::Utilを使ったほうがMojoらしさはある。

#!/usr/bin/env perl
use Mojolicious::Lite;
use Mojo::Util qw(md5_sum);

use File::Spec;

@ARGV = qw(daemon) unless @ARGV;

app->secret('gyazo');

my $dir = app->home->rel_dir('public');
unless (-d $dir) {
    app->log->debug("Creating $dir");
    mkdir $dir;
}

post '/upload' => sub {
    my $self = shift;
    my $imagedata = $self->req->upload('imagedata');
    my $filename = md5_sum($imagedata->slurp) . '.png';

    $imagedata->move_to(File::Spec->catfile($dir, $filename));

    $self->render(text => $self->req->url->base . '/' . $filename);
};

app->start;

*1:Gyazo 1.0で content-disposition に filename が付くようになった