AnyEvent-MSN
view release on metacpan or search on metacpan
examples/client.pl view on Meta::CPAN
#!/usr/bin/perl -I../lib
use AnyEvent;
use AnyEvent::MSN;
use 5.012;
$|++;
$AnyEvent::MSN::DEBUG++;
my ($user, $pass) = @ARGV; # XXX - Better to use a GetOpt-like module
my $cv = AnyEvent->condvar;
($user, $pass) = ('anyevent_msn@hotmail.com', 'public');
($user, $pass) = ('msn@penilecolada.com', 'password');
my $reconnect_timer;
#
my $msn = AnyEvent::MSN->new(
passport => $user, # XXX - I may change the name of this arg before pause
password => $pass,
# Extra user info
status => 'AWY',
friendlyname => 'Just another MSN hacker,',
personalmessage => 'This can\'t be life!',
examples/client.pl view on Meta::CPAN
warn 'NEW CIRCLE!!!!!';
},
on_error => sub {
my ($msn, $msg) = @_;
warn 'Error: ' . $msg;
},
on_fatal_error => sub {
my ($msn, $msg, $fatal) = @_;
warn sprintf 'Fatal error: ' . $msg;
$reconnect_timer = AE::timer 30, 0, sub {
return $msn->connect if $msn->connected;
$cv->send;
}
}
);
$cv->wait;
# SOAP stuff: http://telepathy.freedesktop.org/wiki/Pymsn/MSNP/ContactListActions
# http://imfreedom.org/wiki/MSN
# http://msnpiki.msnfanatic.com/index.php/MSNP13:Contact_Membership
lib/AnyEvent/MSN.pm view on Meta::CPAN
has tid => (is => 'ro',
isa => 'Int',
lazy => 1,
clearer => '_reset_tid',
builder => '_build_tid',
traits => ['Counter'],
handles => {'_inc_tid' => 'inc'}
);
sub _build_tid {0}
after tid => sub { shift->_inc_tid }; # Auto inc
has ping_timer => (is => 'ro',
isa => 'Ref', # AE::timer
writer => '_set_ping_timer'
);
# Server configuration
has policies => (
is => 'bare',
isa => 'HashRef',
clearer => '_reset_policies',
writer => '_set_policies',
traits => ['Hash'],
handles => {_add_policy => 'set',
lib/AnyEvent/MSN.pm view on Meta::CPAN
else {
$s->$method($tid, @data);
}
}
);
# Send version negotiation
$s->send('VER %d %s CVR0', $s->tid, $s->protocol_version);
# Schedule first PNG in two mins
$s->_set_ping_timer(AE::timer 120,
180, sub { $s->send('PNG') });
},
on_connect_error =>
sub { shift; $s->_trigger_fatal_error(shift) },
on_error => sub {
my $h = shift;
$s->_trigger_fatal_error(reverse @_);
$h->destroy;
},
on_eof => sub {
lib/AnyEvent/MSN.pm view on Meta::CPAN
sub _handle_packet_put {
my $s = shift;
# ACK for our PUT packets
}
sub _handle_packet_qng {
my ($s, $next) = @_;
# PONG in reply to our PNG
$s->_set_ping_timer(AE::timer $next, $next, sub { $s->send('PNG') });
}
sub _handle_packet_qry {
my ($s, $tid) = @_;
#
my $token = $s->auth_token('contacts.msn.com')
->{'wst:RequestedSecurityToken'}{'wsse:BinarySecurityToken'}{content};
$token =~ s/&/&/sg;
$token =~ s/</</sg;
t/100_active/101_session.t view on Meta::CPAN
use AnyEvent;
use Test::More;
use lib -f 'BUILD' ? 'lib' : '../../lib';
use_ok 'AnyEvent::MSN';
#{package AnyEvent::MSN; $DEBUG=$DEBUG=1;}
my $cv = AnyEvent->condvar;
my $to
= AnyEvent->timer(after => 60, cb => sub { diag 'Timeout!'; $cv->send });
my $msn = AnyEvent::MSN->new(
passport => 'anyevent_msn@hotmail.com',
password => 'public',
on_connect => sub {
my $s = shift;
pass sprintf 'Connected as %s. Adding self to buddy list...',
$s->passport;
#$cv->send;
$s->add_contact($s->passport);
( run in 1.480 second using v1.01-cache-2.11-cpan-49f99fa48dc )