gloox  0.9.9.12
Public Types | Public Member Functions | List of all members
Registration Class Reference

#include <registration.h>

Inheritance diagram for Registration:
Inheritance graph
[legend]
Collaboration diagram for Registration:
Collaboration graph
[legend]

Public Types

enum  fieldEnum

Public Member Functions

 Registration (ClientBase *parent, const JID &to)
 Registration (ClientBase *parent)
virtual ~Registration ()
void fetchRegistrationFields ()
void createAccount (int fields, const RegistrationFields &values)
void createAccount (const DataForm &form)
void removeAccount ()
void changePassword (const std::string &username, const std::string &password)
void registerRegistrationHandler (RegistrationHandler *rh)
void removeRegistrationHandler ()
virtual bool handleIq (Stanza *)
virtual bool handleIqID (Stanza *stanza, int context)
- Public Member Functions inherited from IqHandler
virtual ~IqHandler ()

Detailed Description

This class is an implementation of XEP-0077 (In-Band Registration).

Derive your object from RegistrationHandler and implement the virtual functions offered by that interface. Then use it like this:

void MyClass::myFunc()
{
m_client = new Client( "example.org" );
m_client->disableRoster(); // a roster is not necessary for registration
m_client->registerConnectionListener( this );
m_reg = new Registration( c );
m_reg->registerRegistrationHandler( this );
m_client->connect();
}
void MyClass::onConnect()
{
m_reg->fetchRegistrationFields();
}

In RegistrationHandler::handleRegistrationFields() you should check which information the server requires to open a new account. You might not always get away with just username and password. Then call createAccount() with a filled-in RegistrationFields and an int representing the bit-wise ORed fields you want to have included in the registration attempt. For your convenience you can use the 'fields' argument of handleRegistrationFields(). ;) It's your responsibility to make sure at least those fields the server requested are filled in.

Check tests/register_test.cpp for an example.

Author
Jakob Schroeter js@ca.nosp@m.maya.nosp@m..net
Since
0.2

Definition at line 91 of file registration.h.

Member Enumeration Documentation

enum fieldEnum

The possible fields of a XEP-0077 account registration.

Definition at line 98 of file registration.h.

Constructor & Destructor Documentation

Registration ( ClientBase parent,
const JID to 
)

Constructor.

Parameters
parentThe ClientBase which is used for establishing a connection.
toThe server or service to authenticate with. If empty the currently connected server will be used.

Definition at line 24 of file registration.cpp.

Registration ( ClientBase parent)

Constructor. Registration will be attempted with the ClientBase's connected host.

Parameters
parentThe ClientBase which is used for establishing a connection.

Definition at line 30 of file registration.cpp.

~Registration ( )
virtual

Virtual destructor.

Definition at line 42 of file registration.cpp.

Member Function Documentation

void changePassword ( const std::string &  username,
const std::string &  password 
)

Tells the server to change the password for the current account.

Parameters
usernameThe username to change the password for. You might want to use Client::username() to get the current prepped username.
passwordThe new password.

Definition at line 163 of file registration.cpp.

void createAccount ( int  fields,
const RegistrationFields values 
)

Attempts to register an account with the given credentials. Only the fields OR'ed in fields will be sent. This can only be called with an unauthenticated parent (Client).

Note
It is recommended to use fetchRegistrationFields to find out which fields the server requires.
Parameters
fieldsThe fields to use to generate the registration request. OR'ed fieldEnum values.
valuesThe struct contains the values which shall be used for the registration.

Definition at line 70 of file registration.cpp.

void createAccount ( const DataForm form)

Attempts to register an account with the given credentials. This can only be called with an unauthenticated parent (Client).

Note
According to XEP-0077, if the server sends both old-style fields and data form, implementations SHOULD prefer data forms.
Parameters
formThe DataForm containing the registration credentials.

Definition at line 122 of file registration.cpp.

void fetchRegistrationFields ( )

Use this function to request the registration fields the server requires. The required fields are returned asynchronously to the object registered as RegistrationHandler by calling RegistrationHandler::handleRegistrationFields().

Definition at line 51 of file registration.cpp.

virtual bool handleIq ( Stanza stanza)
inlinevirtual

Reimplement this function if you want to be notified about incoming IQs.

Parameters
stanzaThe complete Stanza.
Returns
Indicates whether a request of type 'get' or 'set' has been handled. This includes the obligatory 'result' answer. If you return false, a 'error' will be sent.

Implements IqHandler.

Definition at line 189 of file registration.h.

bool handleIqID ( Stanza stanza,
int  context 
)
virtual

Reimplement this function if you want to be notified about incoming IQs with a specific value of the id attribute. You have to enable tracking of those IDs using Client::trackID(). This is usually useful for IDs that generate a positive reply, i.e. <iq type='result' id='reg'/> where a namespace filter wouldn't work.

Parameters
stanzaThe complete Stanza.
contextA value to restore context, stored with ClientBase::trackID().
Returns
Indicates whether a request of type 'get' or 'set' has been handled. This includes the obligatory 'result' answer. If you return false, a 'error' will be sent.

Implements IqHandler.

Definition at line 194 of file registration.cpp.

void registerRegistrationHandler ( RegistrationHandler rh)

Registers the given rh as RegistrationHandler. Only one handler is possible at a time.

Parameters
rhThe RegistrationHandler to register.

Definition at line 184 of file registration.cpp.

void removeAccount ( )

Tells the server to remove the currently authenticated account from the server.

Definition at line 142 of file registration.cpp.

void removeRegistrationHandler ( )

Un-registers the current RegistrationHandler.

Definition at line 189 of file registration.cpp.


The documentation for this class was generated from the following files: