AnyEvent-Plurk
view release on metacpan or search on metacpan
lib/AnyEvent/Plurk.pm view on Meta::CPAN
$self->{__current_request} = http_request(
GET => plurk_api_uri($path, %$form),
cookie_jar => $self->{__cookie_jar},
$cb || sub {
($data, $header) = @_;
$data = from_json($data);
$v->send;
}
);
$v->recv if !$cb;
return wantarray ? ($data, $header) : $data;
}
sub new {
my $this = shift;
my $class = ref($this) || $this;
my $self = $class->SUPER::new(@_);
unless (defined $self->{api_key}) {
croak "no 'api_key' given to AnyEvent::Plurk\n";
}
unless (defined $self->{username}) {
croak "no 'username' given to AnyEvent::Plurk\n";
}
unless (defined $self->{password}) {
croak "no 'password' given to AnyEvent::Plurk\n";
}
$self->{__cookie_jar} = {};
return $self
}
sub login {
my $self = shift;
my $cb = shift;
$self->send_request(
"Users/login", {
username => $self->{username},
password => $self->{password}
}
)
}
sub _start_polling {
my $self = shift;
$self->{__polling_time_offset} ||= current_time_offset;
$self->send_request(
"Polling/getPlurks",
{
offset => $self->{__polling_time_offset}
},
sub {
my ($data, $header) = @_;
if ($header->{Status} == 400) {
# say $data;
}
else {
$data = from_json($data);
my $unread_plurks = $data->{plurks};
if (@$unread_plurks) {
my $users = $data->{plurk_users};
for my $pu (@$unread_plurks) {
$pu->{owner} = $users->{$pu->{owner_id}} if $users->{$pu->{owner_id}};
}
$self->event("unread_plurks" => $unread_plurks);
$self->{__polling_time_offset} = current_time_offset;
}
}
$self->{__polling_timer} = AE::timer 60, 0, sub {
undef $self->{__polling_timer};
$self->_start_polling;
}
}
);
}
sub start {
my $self = shift;
$self->login;
$self->_start_polling;
}
sub add_plurk {
my $self = shift;
my $content = shift;
$self->send_request("Timeline/plurkAdd", {qualifier => ":", content => $content});
}
sub delete_plurk {
my $self = shift;
my $id = shift;
$self->send_request("Timeline/plurkDelete", {plurk_id => $id});
}
1;
__END__
=head1 NAME
AnyEvent::Plurk - plurk interface for AnyEvent-based programs
=head1 SYNOPSIS
my $p = AnyEvent::Plurk->new(
username => $username,
password => $password
);
$p->reg_cb(
( run in 1.400 second using v1.01-cache-2.11-cpan-a5162978ef8 )