Perlで「もごもご」にアクセスする
もごもごのAPIは、Twitter互換なので、Perlからアクセスする場合は、Net::Twitterが使えます。
APIの互換性重要
my $mogo2 = Net::Twitter->new( username => 'xxx@example.com', password => 'myapipass', apirealm => 'mogo2 api basic auth', apihost => 'api.mogo2.jp:80', apiurl => 'http://api.mogo2.jp/statuses' ); my $result = $mogo2->update($status);
もごもごのAPIでは、さらに、timelineにオプションが渡せたり、スレッドの取得の拡張APIがあるので、Net::Twitterをbaseにして書いてみた。
ソースは追記。
package Net::Mogo2; use warnings; use strict; use base qw/Net::Twitter/; our $VERSION = '0.01'; use URI; sub new { my $class = shift; my %conf = @_; $conf{apiurl} = 'http://api.mogo2.jp/statuses' unless defined $conf{apiurl}; $conf{apihost} = 'api.mogo2.jp:80' unless defined $conf{apihost}; $conf{apirealm} = 'mogo2 api basic auth' unless defined $conf{apirealm}; $class->SUPER::new(%conf); } sub _request { my $self = shift; my $path = shift; my $uri = URI->new( $self->{apiurl} . $path ); $uri->query_form(@_); my $req = $self->{ua}->post($uri); return ($req->is_success) ? JSON::Any->jsonToObj($req->content) : undef; } sub public_timeline { my $self = shift; $self->_request("/public_timeline.json", @_); } sub thread_timeline { my $self = shift; my $id = shift; $self->_request("/thread_timeline/$id.json", @_); } sub friends_timeline { my $self = shift; my $id; if ( @_ % 2 ) { $id = shift; } my $uri = $id ? "/friends_timeline/$id.json" : "/friends_timeline.json"; $self->_request($uri, @_); } sub user_timeline { my $self = shift; my $id; if ( @_ % 2 ) { $id = shift; } my $uri = $id ? "/user_timeline/$id.json" : "/user_timeline.json"; $self->_request($uri, @_); } 1;