Sunaba が楽しいので、スカウター的なのを書いてみた
なんとなくノリで何の意味もないのをつくって Perl で公開したいときサクっとできるので楽しいですね。id:mechairoi さんと話しながら、よくあるスカウターっぽいのをかいてみました。30分ぐらい
- http://gtd-nfai3xgdavsubyudvg.sunaba-app.plackperl.org/
- http://sunaba.plackperl.org/app/gtd-nfai3xgdavsubyudvg
Plack::Request がかんたんには使えないぽいので自力でがんばってます。
use strict;
use warnings;
use URI::Escape;
use Digest::SHA1 qw(sha1_hex);
use URI;
my $handler = sub {
my $env = shift;
my $params = +{ map { map { uri_unescape $_ } split /=/, $_, 2 } split /[;&]/, $env->{QUERY_STRING} };
my $content = '';
my $url = $params->{url};
if ($url) {
my $uri = URI->new($url);
my $int = substr(unpack('H*', sha1_hex($url)), 0, 4);
my $link = sprintf('http://%s/?url=%s', $env->{HTTP_HOST}, uri_escape($url));
my $status = uri_escape(sprintf('%s(ryの戦闘能力は%sです %s', $uri->host, $int, $link));
$content = qq{
<p>$url の戦闘能力は $int です</p>
<a href="http://twitter.com/?status=$status">Twitter に投稿</a>
};
}
[ 200, [ "Content-Type", "text/html" ], [
qq{
<!DOCTYPE html>
<title>スカウター</title>
<style type="text/css">
body {
line-height: 1.66;
}
div.content {
width: 50em;
padding: 1em;
margin: 1em auto;
}
form {
margin: 2em 0;
}
</style>
<div class="content">
$content
<form action="" method="get">
<input type="text" name="url" value="http://example.com" size="50"/>
<input type="submit" value="測定"/>
</form>
</div>
}
] ];
}