slixmpp/examples/custom_stanzas/stanza.py

57 lines
1.8 KiB
Python
Raw Normal View History

2014-07-17 12:19:04 +00:00
from slixmpp.xmlstream import ElementBase
2012-04-12 15:06:03 +00:00
class Action(ElementBase):
"""
A stanza class for XML content of the form:
2014-07-17 12:19:04 +00:00
<action xmlns="slixmpp:custom:actions">
<method>X</method>
<param>X</param>
<status>X</status>
</action>
"""
2014-08-17 19:53:34 +00:00
#: The `name` field refers to the basic XML tag name of the
#: stanza. Here, the tag name will be 'action'.
2012-04-12 15:06:03 +00:00
name = 'action'
#: The namespace of the main XML tag.
2014-07-17 12:19:04 +00:00
namespace = 'slixmpp:custom:actions'
#: The `plugin_attrib` value is the name that can be used
#: with a parent stanza to access this stanza. For example
#: from an Iq stanza object, accessing:
2014-08-17 19:53:34 +00:00
#:
#: iq['action']
2014-08-17 19:53:34 +00:00
#:
#: would reference an Action object, and will even create
#: an Action object and append it to the Iq stanza if
#: one doesn't already exist.
2012-04-12 15:06:03 +00:00
plugin_attrib = 'action'
#: Stanza objects expose dictionary-like interfaces for
#: accessing and manipulating substanzas and other values.
#: The set of interfaces defined here are the names of
#: these dictionary-like interfaces provided by this stanza
#: type. For example, an Action stanza object can use:
#:
#: action['method'] = 'foo'
#: print(action['param'])
#: del action['status']
#:
#: to set, get, or remove its values.
interfaces = {'method', 'param', 'status'}
#: By default, values in the `interfaces` set are mapped to
#: attribute values. This can be changed such that an interface
#: maps to a subelement's text value by adding interfaces to
#: the sub_interfaces set. For example, here all interfaces
#: are marked as sub_interfaces, and so the XML produced will
#: look like:
2014-08-17 19:53:34 +00:00
#:
2014-07-17 12:19:04 +00:00
#: <action xmlns="slixmpp:custom:actions">
#: <method>foo</method>
#: </action>
2012-04-12 15:06:03 +00:00
sub_interfaces = interfaces