This module provides XSO subclasses which provide access to stanzas and their RFC6120-defined child elements.
Much of what you’ll read here makes much more sense if you have read RFC 6120.
Base for all stanza classes. Usually, you will use the derived classes:
Message | An XMPP message stanza. |
Presence | An XMPP presence stanza. |
IQ | An XMPP IQ stanza. |
However, some common attributes are defined in this base class:
The xml:lang value as LanguageTag.
Note
The id_ attribute is not defined in StanzaBase as different stanza classes have different requirements with respect to presence of that attribute.
In addition to these attributes, common methods needed are also provided:
If the id_ already has a non-false (false is also the empty string!) value, this method is a no-op.
Otherwise, the id_ attribute is filled with eight bytes of random data, encoded as base64.
Note
This method only works on subclasses of StanzaBase which define the id_ attribute.
Create a new instance of this stanza (this directly uses type(self), so also works for subclasses without extra care) which has the given error value set as error.
In addition, the id_, from_ and to values are transferred from the original (with from and to being swapped). Also, the type_ is set to "error".
An XMPP message stanza. The keyword arguments can be used to initialize the attributes of the Message.
The optional ID of the stanza.
The type attribute of the stanza. The allowed values are "chat", "groupchat", "error", "headline" and "normal".
A XSOList of Body elements. To get a body element matching the users language, use the filter() method on the list.
A XSOList of Subject elements. To get a subject element matching the users language, use the filter() method on the list.
A Thread instance representing the threading information attached to the message or None if no threading information is attached.
Note that some attributes are inherited from StanzaBase:
from_ | sender JID |
to | recipient JID |
lang | xml:lang value |
error | Error instance |
An XMPP IQ stanza. The keyword arguments can be used to initialize the attributes of the IQ.
The optional ID of the stanza.
The type attribute of the stanza. The allowed values are "error", "result", "set" and "get".
An XSO which forms the payload of the IQ stanza.
Note that some attributes are inherited from StanzaBase:
from_ | sender JID |
to | recipient JID |
lang | xml:lang value |
error | Error instance |
New payload classes can be registered using:
An XMPP presence stanza. The keyword arguments can be used to initialize the attributes of the Presence.
The optional ID of the stanza.
The type attribute of the stanza. The allowed values are "error", "probe", "subscribe", "subscribed", "unavailable", "unsubscribe", "unsubscribed" and None, where None signifies the absence of the type attribute.
The priority value of the presence. The default here is 0 and corresponds to an absent priority element.
A XSOList of Status elements. To get a status matching the users language, use the filter() method on the list.
Note that some attributes are inherited from StanzaBase:
from_ | sender JID |
to | recipient JID |
lang | xml:lang value |
error | Error instance |
For Presence and Message as well as IQ errors, the standardized payloads also have classes which are used as values for the attributes:
An XMPP stanza error. The keyword arguments can be used to initialize the attributes of the Error.
The type of the error. Valid values are "auth", "cancel", "continue", "modify" and "wait".
The standard defined condition which triggered the error. Possible values can be determined by looking at the RFC or the source.
Any child elements unknown to the XSO are dropped. This is to support application-specific conditions used by other applications. To register your own use xso.XSO.register_child() on application_condition:
A xso.XSO.Child which can be used to register support for application-specific errors.
Threading information, consisting of a thread identifier and an optional parent thread identifier.
Identifier of the thread
The subject of a Message stanza.
While it might seem intuitive to refer to the subject using a ChildText descriptor, the fact that there might be multiple texts for different languages justifies the use of a separate class.
The xml:lang of this subject part, as LanguageTag.
The textual content of the subject
The textual body of a Message stanza.
While it might seem intuitive to refer to the body using a ChildText descriptor, the fact that there might be multiple texts for different languages justifies the use of a separate class.
The xml:lang of this body part, as LanguageTag.
The textual content of the body.
The status of a Presence stanza.
While it might seem intuitive to refer to the status using a ChildText descriptor, the fact that there might be multiple texts for different languages justifies the use of a separate class.
The xml:lang of this status part, as LanguageTag.
The textual content of the status
Base class for exceptions raised when stanza payloads cannot be processed.
The IQ instance which has not been parsed completely. The attributes of the instance are already there, everything else is not guaranteed to be there.
The XSO parsing event arguments which caused the parsing to fail.
A constraint of a sub-object was not fulfilled and the stanza being processed is illegal. The partially parsed stanza object is provided in partial_obj.
The payload of an IQ object is unknown. The partial object with attributes but without payload is available through partial_obj.