最近ようやく CPAN Author になりました。ふと http://d.hatena.ne.jp/sun-basix/20100620/1277054186 が目にとまったので、モジュールの紹介もかねて書いておきます。
AnyEvent::Twitter の _make_oauth_request() という undocumented なメソッドを使えば ChirpUserStream も OAuth 対応させることができ、 config.json は eg/gen_token.plで生成できます。 want_body_handle やら on_header やらオプションが必要なので、根本的にはリンク先とは変わらない感じ。
こんなかんじ
#!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use Data::Dumper; use AnyEvent; use AnyEvent::HTTP; use AnyEvent::Twitter; use JSON; use Perl6::Slurp; my $json_text = slurp 'config.json'; my $config = decode_json($json_text); my $ua = AnyEvent::Twitter->new(%$config); my $req = $ua->_make_oauth_request( request_url => 'http://chirpstream.twitter.com/2b/user.json', request_method => 'GET', extra_params => {} ); my $cv = AE::cv; http_request('GET' => $req->to_url, want_body_handle => 1, on_header => sub { my $hdr = shift; warn "$hdr->{Status}: $hdr->{Reason}"; }, sub { my $hdl = shift; my $r = sub { my (undef, $json) = @_; if (my $text = $json->{text}) { print encode_utf8 "$json->{user}{screen_name}: $text\n"; } else { print encode_utf8 Dumper($json); } }; $hdl->on_read(sub { $hdl->push_read( json => $r ); }); } ); $cv->recv; exit; __END__