MochiKit的にPoCo::Client::HTTPをつかえるラッパーを書いてみた。

POE は結構好きなんだけど、使ってるにつれていろいろ不満が出てくる。

Client::HTTP もその一つで、レスポンスを受け取るコールバックに CodeRef を指定できないくていちいちステートを作らないといけないのが嫌なので、こんなのを作ってみました。

POE::Component::Client::HTTPDeferred

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もほしいな。

by typester / at 2008-11-13T23:04:00 / perl · poe / Comment

ぼーっとしてるな

  • いい天気だなーってゆっくり歩いてたら遅刻しそうになってダッシュ
  • キウイスムージー買いにいったらマンゴーとかナタデココとかのスムージーはあるのにキウイだけ自販機から消えている
  • しょうがないので梅こんぶ茶でも飲むかとおもってシンクに行くも手が勝手に珈琲フィルターとかをセットしてしまったので珈琲つくらざるをえなくなる
  • しょうがないので珈琲飲む (イマココ)
by typester / at 2008-11-13T10:40:00 / life / Comment