AnyEvent-MSN
view release on metacpan or search on metacpan
lib/AnyEvent/MSN.pm view on Meta::CPAN
</ABFindContactsPaged>
</soap:Body>
</soap:Envelope>
XML
sub {
my $contacts = shift;
# XXX - Do something with these contacts
$s->_set_contacts($contacts);
my $ticket
= __html_unescape(
$s->contacts->{'soap:Body'}{'ABFindContactsPagedResponse'}
{'ABFindContactsPagedResult'}{'CircleResult'}
{'CircleTicket'});
$s->send('USR %d SHA A %s',
$s->tid, MIME::Base64::encode_base64($ticket, ''));
#
my $x = # XML modules get it wrong if we only have 1 buddy
$s->contacts->{'soap:Body'}{'ABFindContactsPagedResponse'}
{'ABFindContactsPagedResult'}{'Contacts'}{'Contact'};
lib/AnyEvent/MSN.pm view on Meta::CPAN
{'wsa:Address'},
$token
);
}
#
if ($policy =~ m[MBI]) {
my $token = $s->auth_token('messengerclear.live.com')
; # or http://Passport.NET/tb
my $token_
= __html_escape($token->{'wst:RequestedSecurityToken'}
{'wsse:BinarySecurityToken'}{'content'});
$s->send('USR %d SSO S %s %s %s',
$s->tid,
$token->{'wst:RequestedSecurityToken'}
{'wsse:BinarySecurityToken'}{'content'},
AnyEvent::MSN::Protocol::SSO(
$nonce,
$token->{'wst:RequestedProofToken'}
{'wst:BinarySecret'}
),
lib/AnyEvent/MSN.pm view on Meta::CPAN
$tid;
}
after set_status => sub {
my ($s, $status) = @_;
my $body = sprintf '<user>' . '<s n="PE">
<UserTileLocation>0</UserTileLocation><FriendlyName>%s</FriendlyName><PSM>%s</PSM><RUM></RUM><RLT>0</RLT></s>'
. '<s n="IM"><Status>%s</Status><CurrentMedia></CurrentMedia></s>'
. '<sep n="PD"><ClientType>1</ClientType><EpName>%s</EpName><Idle>false</Idle><State>%s</State></sep>'
. '<sep n="PE" epid="%s"><VER>MSNMSGR:15.4.3508.1109</VER><TYP>1</TYP><Capabilities>2952790016:557056</Capabilities></sep>'
. '<sep n="IM"><Capabilities>2953838624:132096</Capabilities></sep>'
. '</user>', __html_escape($s->friendly_name),
__html_escape($s->personal_message),
$status,
__html_escape($s->location), $status, $s->guid;
my $out
= sprintf
qq[To: 1:%s\r\nRouting: 1.0\r\nFrom: 1:%s;epid=%s\r\n\r\nStream: 1\r\nFlags: ACK\r\nReliability: 1.0\r\n\r\nContent-Length: %d\r\nContent-Type: application/user+xml\r\nPublication: 1.0\r\nUri: /user\r\n\r\n%s],
$s->passport,
$s->passport, $s->guid, length($body), $body;
$s->send("PUT %d %d\r\n%s", $s->tid, length($out), $out);
};
# Testing/Incomplete stuff
sub create_group_chat {
lib/AnyEvent/MSN.pm view on Meta::CPAN
=cut
try {
$xml_twig->parse($data);
$xml = $xml_twig->simplify(keyattr => [qw[type id value]]);
}
catch { $s->_trigger_fatal_error(qq[parsing XML: $_]) };
$xml;
}
# Non-OOP utility functions
sub __html_escape {
my $x = shift;
$x =~ s[&][&]sg;
$x =~ s[<][<]sg;
$x =~ s[>][>]sg;
$x =~ s["]["]sg;
$x;
}
sub __html_unescape {
my $x = shift;
$x =~ s[<][<]sg;
$x =~ s[>][>]sg;
$x =~ s["]["]sg;
$x =~ s[&][&]sg;
$x;
}
#
__PACKAGE__->meta->make_immutable();
( run in 0.564 second using v1.01-cache-2.11-cpan-c21f80fb71c )