AnyEvent-XMPP

 view release on metacpan or  search on metacpan

samples/simple_register_example  view on Meta::CPAN

#!/opt/perl/bin/perl
use strict;
use utf8;
use AnyEvent;
use AnyEvent::XMPP::Client;
use AnyEvent::XMPP::Ext::Registration;
use AnyEvent::XMPP::Util qw/split_jid/;

sub result {
   my ($reg, $ok, $error, $form, $comment) = @_;
   $comment ||= 'REGISTERED!';
   if ($ok) {
      print "$comment\n";
   } else {
      print "ERROR: " . $error->string . " [form: $form]\n";
   }
}

my ($user, $pw, $act) = @ARGV;
my ($username, $server) = split_jid ($user);

unless ($user && $pw) {
print <<USAGE;
usage:
  register account:
     ./simple_register_example <jid> <password>

  unregister account:
     ./simple_register_example <jid> <password> unregister

  change password:
     ./simple_register_example <jid> <password> chpw:<newpassword>

USAGE
die "\n";
}

my $j = AnyEvent->condvar;
my $cl = AnyEvent::XMPP::Client->new (debug => 1);
$cl->add_account ($user, $pw);
$cl->reg_cb (
   stream_pre_authentication => sub {
      my ($cl, $acc) = @_;

      my $reg = AnyEvent::XMPP::Ext::Registration->new (connection => $acc->connection);

      if ($act eq '') {
         $reg->send_registration_request (sub {
            my ($reg, $form, $error) = @_;

            if ($error) {
               print "ERROR: " . $error->string . "\n";

            } else {
               my $df = $form->get_data_form;
               my $lf = $form->get_legacy_form_fields;
               my $oo = $form->get_oob;

               if ($df) {
                  print "GOT FORM! ".($df ? $df->as_debug_string : "")."\n";
               }
               if ($lf) {
                  require Data::Dumper;



( run in 0.895 second using v1.01-cache-2.11-cpan-39bf76dae61 )