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;