AnyEvent::XMPP::Ext::Registration - Handles all tasks of in band registration
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 });
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.
This is the constructor for a registration object.
This must be a AnyEvent::XMPP::Connection (or some other subclass of that) object.
This argument is required.
This method sends a register form request. $cb will be called when either the form arrived or an error occured.
$cb
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.
$self
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.
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.
submit_form
This method sends a password change request for the user $username with the new password $password.
$username
$password
This method submits the $form which should be of type AnyEvent::XMPP::Ext::RegisterForm and should be an answer form.
$form
$con is the connection on which to send this form.
$con
$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.
Robin Redeker, <elmex at ta-sa.org>, JID: <elmex at jabber.org>
<elmex at ta-sa.org>
<elmex at jabber.org>
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.
To install AnyEvent::XMPP, copy and paste the appropriate command in to your terminal.
cpanm
cpanm AnyEvent::XMPP
CPAN shell
perl -MCPAN -e shell install AnyEvent::XMPP
For more information on module installation, please visit the detailed CPAN module installation guide.