MochiKit的にPoCo::Client::HTTPをつかえるラッパーを書いてみた。
POE は結構好きなんだけど、使ってるにつれていろいろ不満が出てくる。
Client::HTTP もその一つで、レスポンスを受け取るコールバックに CodeRef を指定できないくていちいちステートを作らないといけないのが嫌なので、こんなのを作ってみました。
MochiKit のインタフェースを参考にしてます。
こんな感じで使う。
use POE qw/Component::Client::HTTPDeferred/;
use HTTP::Request::Common;
POE::Session->create(
inline_states => {
_start => sub {
my $ua = POE::Component::Client::HTTPDeferred->new;
my $d = $ua->request( GET 'http://unknownplace.org/memo/' );
$d->addBoth(sub {
my $res = shift;
if ($res->is_success) {
print $res->as_string;
}
else {
warn $res->status_line;
}
$ua->shutdown;
});
},
},
);
POE::Kernel->run;
js やってる人にはちょっと見慣れた感じじゃない?
これの Deferred 自体は全然機能足りてないけど、素で PoCo::C::HTTP つかうのと比べるとずいぶん楽になる。DeferredListもほしいな。