Net::Wassr

ものすごい適当につくってみた。

package Net::Wassr;
use strict;
use warnings;
use LWP::UserAgent;
use JSON::Any;
use Encode;

our $VERSION = '0.01';

sub new {
    my $class = shift;
    my %args = @_;

    $args{apiurl}   ||= 'http://api.wassr.jp';
    $args{apihost}  ||= 'api.wassr.jp:80';
    $args{apirealm} ||= 'API Authentication';
    $args{user}     ||= '';
    $args{passwd}   ||= '';
    $args{source}   ||= 'Net::Wassr';

    $args{ua} ||= LWP::UserAgent->new();
    $args{ua}->credentials(
        $args{apihost},
        $args{apirealm},
        $args{user},
        $args{passwd},
    );

    $args{ua}->env_proxy();

    return bless {%args}, $class;
}

sub public_timeline {
    my $self = shift;
    return $self->_get('/public_timeline.json');
}

sub friends_timeline {
    my ($self, $args) = @_;
    return $self->_get('/friends_timeline.json',$args);
}

sub user_timeline {
    my ($self, $args) = @_;
    return $self->_get('/user_timeline.json',$args);
}

sub show {
    my ($self, $args) = @_;
    return $self->_get('/show.json',$args);
}

sub update {
    my ($self, $args) = @_;
    my $encode = delete $args->{encode};
    $encode ||= 'utf8';
    $args->{source} ||= $self->{source};
    Encode::from_to($args->{status}, $encode, 'utf8', 0);
    return $self->_get('/update.json',$args);
}

sub _get {
    my ($self , $api, $args) = @_;

    my $req = $self->{ua}->post($self->{apiurl} . $api,
        content => $args,
    );
    return $req->is_success ? JSON::Any->jsonToObj($req->content) : undef;
}

1;

APIも充実してるのでどんどんわさってください。