Provided by: libanyevent-xmpp-perl_0.54-2_all bug

NAME

       AnyEvent::XMPP::Ext::Registration - Handles all tasks of in band registration

SYNOPSIS

          my $con = AnyEvent::XMPP::Connection->new (...);

          $con->reg_cb (stream_pre_authentication => sub {
             my ($con) = @_;
             my $reg = AnyEvent::XMPP::Ext::Registration->new (connection => $con);

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

                if ($error) {
                   # error handling

                } else {
                   my $af = $form->try_fillout_registration ("tester", "secret");

                   $reg->submit_form ($af, sub {
                      my ($reg, $ok, $error, $form) = @_;

                      if ($ok) { # registered successfully!
                         $con->authenticate

                      } else {   # error
                         if ($form) { # we got an alternative form!
                            # fill it out and submit it with C<submit_form> again
                         }
                      }
                   });
                }
             });

             0
          });

DESCRIPTION

       This module handles all tasks of in band registration that are possible and specified by
       XEP-0077. It's mainly a helper class that eases some tasks such as submitting and
       retrieving a form.

METHODS

       new (%args)
           This is the constructor for a registration object.

           connection
               This must be a AnyEvent::XMPP::Connection (or some other subclass of that) object.

               This argument is required.

       send_registration_request ($cb)
           This method sends a register form request.  $cb will be called when either the form
           arrived or an error occured.

           The first argument of $cb is always $self.  If the form arrived the second argument of
           $cb will be a AnyEvent::XMPP::Ext::RegisterForm object.  If an error occured the
           second argument will be undef and the third argument will be a
           AnyEvent::XMPP::Error::Register object.

           For hints how AnyEvent::XMPP::Ext::RegisterForm should be filled out look in XEP-0077.
           Either you have legacy form fields, out of band data or a data form.

           See also try_fillout_registration in AnyEvent::XMPP::Ext::RegisterForm.

       send_unregistration_request ($cb)
           This method sends an unregistration request.

           For description of the semantics of the callback in $cb plase look in the description
           of the "submit_form" method below.

       send_password_change_request ($username, $password, $cb)
           This method sends a password change request for the user $username with the new
           password $password.

           For description of the semantics of the callback in $cb plase look in the description
           of the "submit_form" method below.

       submit_form ($form, $cb)
           This method submits the $form which should be of type
           AnyEvent::XMPP::Ext::RegisterForm and should be an answer form.

           $con is the connection on which to send this form.

           $cb is the callback that will be called once the form has been submitted and either an
           error or success was received.  The first argument to the callback will be the
           AnyEvent::XMPP::Ext::Registration object, the second will be a boolean value that is
           true when the form was successfully transmitted and everything is fine.  If the second
           argument is false then the third argument is a AnyEvent::XMPP::Error::Register object.
           If the error contained a data form which is required to successfully make the request
           then the fourth argument will be a AnyEvent::XMPP::Ext::RegisterForm which you should
           fill out and send again with "submit_form".

           For the semantics of such an error form see also XEP-0077.

AUTHOR

       Robin Redeker, "<elmex at ta-sa.org>", JID: "<elmex at jabber.org>"

COPYRIGHT & LICENSE

       Copyright 2007, 2008 Robin Redeker, all rights reserved.

       This program is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.