---
name: "AnyEvent::XMPP::Ext::Registration"
section: "3pm"
platform: "linux"
package: "perl-anyevent-xmpp"
version: "0.55-7"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/AnyEvent::XMPP::Ext::Registration"
---

# AnyEvent::XMPP::Ext::Registration(3pm)

Handles all tasks of in band registration

## 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.
