AnyEvent-Plurk
view release on metacpan or search on metacpan
lib/AnyEvent/Plurk.pm view on Meta::CPAN
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(
unread_plurks => sub {
my ($p, $plurks) = @_;
is(ref($plurks), "ARRAY", "Received latest plurks");
}
);
my $v = AE::cv;
$p->start;
$v->recv;
=head1 METHODS
=over 4
=item reg_cb( x => $cb, ...)
Register a callback for event x. See below for the list of events.
( run in 1.348 second using v1.01-cache-2.11-cpan-39bf76dae61 )