AnyEvent-Lingr
view release on metacpan or search on metacpan
lib/AnyEvent/Lingr.pm view on Meta::CPAN
Lingr session key. If this parameter is passed, this module try to reuse this key for calling session/verify api, otherwise create new session.
=back
my $lingr = AnyEvent::Lingr->new(
user => 'your lingr username',
password => 'your lingr password',
api_key => 'your lingr api_key', # optional
);
=head2 start_session
Start lingr chat session.
This method runs following sequences:
=over
=item 1. Create session (or verify session if session parameter was passed)
=item 2. Get joined room list, and then fire C<on_room_info> callback.
=item 3. Subscribe all joined room events, and wait events...
=item 4. When some events is occurred, fire C<on_event> callback
=item 5. goto step 3.
=back
For stopping this loop, you just destroy lingr object by doing:
undef $lingr;
For updating subscription list, you can use C<update_room_info> method:
$lingr->update_room_info;
=head2 update_room_info
Update joined room info, and fire on_room_info callback.
This method also update subscription rooms which is target room for on_event callback.
=head2 say($room, $message [, $cb ])
Say something to lingr room.
$lingr->say('perl_jp', 'hi!');
If you want response data, you can speficy callback.
The callback is invoked when the API call was successful.
$lingr->say('perl_jp', 'hi there!', sub {
my $res = shift;
warn $res->{message}->{id};
});
=head1 CALLBACKS
This module supports following three callbacks:
=over
=item * on_error->($msg)
=item * on_room_info->($rooms)
=item * on_event->($event)
=back
All callbacks can be set by accessor:
$lingr->on_error(sub { ... });
Or by constructor:
my $lingr = AnyEvent::Lingr->new(
...
on_error => sub { ... },
);
=head2 on_error->($msg)
Error callbacks.
C<$msg> is error message. If this message is form of "\d\d\d: message" like:
595: Invalid argument
This is http level or connection level error. Otherwise C<$msg> is error message returned from lingr api server.
Both case, lingr session was closed before this callback, so you can restart session in this callback:
$lingr->on_error(sub {
my ($msg) = @_;
warn 'Lingr error: ', $msg;
# reconnect after 5 seconds,
my $t; $t = AnyEvent->timer(
after => 5,
cb => sub {
$lingr->start_session;
undef $t;
},
);
});
=head2 on_room_info->($rooms)
Fired when after start_session or after update_room_info method.
C<$rooms> is ArrayRef of room information you joined.
=head2 on_event->($event)
Fired when some events is occurred in your subscribed rooms.
=head1 AUTHOR
Daisuke Murase <typester@cpan.org>
=head1 COPYRIGHT AND LICENSE
Copyright (c) 2013 Daisuke Murase All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
=cut
( run in 1.766 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )