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 thesubmit_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 thesubmit_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 withsubmit_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.