#!/opt/perl/bin/perl use strict; use utf8; use Event; use AnyEvent; use XML::Twig; use Net::XMPP2 qw/xep-86/; use Net::XMPP2::Client; use Encode; sub dumpxml { my $data = shift; my $t = XML::Twig->new; if ($t->safe_parse ("$data")) { $t->set_pretty_print ('indented'); $t->print; print "\n"; } else { print "[$data]\n"; } } binmode STDOUT, ":utf8"; my $j = AnyEvent->condvar; my $cl = Net::XMPP2::Client->new; #$cl->add_account ('elmex@jabber.org/Net::XどなPP2', 'xxxxxxxx'); $cl->add_account ('elmor@jabber.org/Net::XどなPP2', 'xxxxxxxx'); $cl->reg_cb ( connected => sub { # $cl->send_message ("Hello!" => 'elmex@jabber.org'); 0 }, roster_update => sub { my ($cl, $acc, $roster, $contacts) = @_; warn "ROSTER UPD\n"; $roster->debug_dump; 1 }, presence_update => sub { my ($cl, $acc, $roster, $contact, $old, $new) = @_; warn "PRESENCE UPD\n"; $roster->debug_dump; 1 }, sasl_error => sub { my ($cl, $acc, $error) = @_; print "SASL ERROR".$error->string."\n"; } ); $cl->reg_cb (contact_request_subscribe => sub { my ($cl, $acc, $roster, $contact, $rdoit) = @_; $$rdoit = 1; $contact->send_subscribe; 1 }); $cl->reg_cb (contact_did_unsubscribe => sub { my ($cl, $acc, $roster, $contact, $rdoit) = @_; $$rdoit = 1; 1 }); $cl->reg_cb (roster_update => sub { my ($cl, $acc, $roster, $contacts) = @_; $roster->new_contact ('elmex@jabber.org', 'Der elmex', ['ABC', 'TEst'], sub { # $roster->get_contact ('elmex@jabber.org')->send_subscribe; # $roster->delete_contact ('elmex@jabber.org'); }); 0 }); $cl->start; $j->wait;