More documentation for XEP-0030 plugin.
This commit is contained in:
parent
34c374a1e1
commit
f97f6e5985
@ -108,7 +108,8 @@ class xep_0030(base_plugin):
|
|||||||
self._disco_ops = ['get_info', 'set_identities', 'set_features',
|
self._disco_ops = ['get_info', 'set_identities', 'set_features',
|
||||||
'get_items', 'set_items', 'del_items',
|
'get_items', 'set_items', 'del_items',
|
||||||
'add_identity', 'del_identity', 'add_feature',
|
'add_identity', 'del_identity', 'add_feature',
|
||||||
'del_feature', 'add_item', 'del_item']
|
'del_feature', 'add_item', 'del_item',
|
||||||
|
'del_identities', 'del_features']
|
||||||
self._handlers = {}
|
self._handlers = {}
|
||||||
for op in self._disco_ops:
|
for op in self._disco_ops:
|
||||||
self._handlers[op] = {'global': getattr(self.static, op),
|
self._handlers[op] = {'global': getattr(self.static, op),
|
||||||
@ -141,8 +142,10 @@ class xep_0030(base_plugin):
|
|||||||
set_features
|
set_features
|
||||||
set_items
|
set_items
|
||||||
del_items
|
del_items
|
||||||
|
del_identities
|
||||||
del_identity
|
del_identity
|
||||||
del_feature
|
del_feature
|
||||||
|
del_features
|
||||||
del_item
|
del_item
|
||||||
add_identity
|
add_identity
|
||||||
add_feature
|
add_feature
|
||||||
|
@ -136,6 +136,15 @@ class StaticDisco(object):
|
|||||||
self.nodes[(jid, node)]['items'] = DiscoItems()
|
self.nodes[(jid, node)]['items'] = DiscoItems()
|
||||||
|
|
||||||
def add_identity(self, jid, node, data):
|
def add_identity(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Add a new identity to te JID/node combination.
|
||||||
|
|
||||||
|
The data parameter may provide:
|
||||||
|
category -- The general category to which the agent belongs.
|
||||||
|
itype -- A more specific designation with the category.
|
||||||
|
name -- Optional human readable name for this identity.
|
||||||
|
lang -- Optional standard xml:lang value.
|
||||||
|
"""
|
||||||
self.add_node(jid, node)
|
self.add_node(jid, node)
|
||||||
self.nodes[(jid, node)]['info'].add_identity(
|
self.nodes[(jid, node)]['info'].add_identity(
|
||||||
data.get('category', ''),
|
data.get('category', ''),
|
||||||
@ -144,11 +153,27 @@ class StaticDisco(object):
|
|||||||
data.get('lang', None))
|
data.get('lang', None))
|
||||||
|
|
||||||
def set_identities(self, jid, node, data):
|
def set_identities(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Add or replace all identities for a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter should include:
|
||||||
|
identities -- A list of identities in tuple form:
|
||||||
|
(category, type, name, lang)
|
||||||
|
"""
|
||||||
identities = data.get('identities', set())
|
identities = data.get('identities', set())
|
||||||
self.add_node(jid, node)
|
self.add_node(jid, node)
|
||||||
self.nodes[(jid, node)]['info']['identities'] = identities
|
self.nodes[(jid, node)]['info']['identities'] = identities
|
||||||
|
|
||||||
def del_identity(self, jid, node, data):
|
def del_identity(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Remove an identity from a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter may provide:
|
||||||
|
category -- The general category to which the agent belonged.
|
||||||
|
itype -- A more specific designation with the category.
|
||||||
|
name -- Optional human readable name for this identity.
|
||||||
|
lang -- Optional, standard xml:lang value.
|
||||||
|
"""
|
||||||
if (jid, node) not in self.nodes:
|
if (jid, node) not in self.nodes:
|
||||||
return
|
return
|
||||||
self.nodes[(jid, node)]['info'].del_identity(
|
self.nodes[(jid, node)]['info'].del_identity(
|
||||||
@ -157,21 +182,68 @@ class StaticDisco(object):
|
|||||||
data.get('name', None),
|
data.get('name', None),
|
||||||
data.get('lang', None))
|
data.get('lang', None))
|
||||||
|
|
||||||
|
def del_identities(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Remove all identities from a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter is not used.
|
||||||
|
"""
|
||||||
|
if (jid, node) not in self.nodes:
|
||||||
|
return
|
||||||
|
del self.nodes[(jid, node)]['info']['identities']
|
||||||
|
|
||||||
def add_feature(self, jid, node, data):
|
def add_feature(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Add a feature to a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter should include:
|
||||||
|
feature -- The namespace of the supported feature.
|
||||||
|
"""
|
||||||
self.add_node(jid, node)
|
self.add_node(jid, node)
|
||||||
self.nodes[(jid, node)]['info'].add_feature(data.get('feature', ''))
|
self.nodes[(jid, node)]['info'].add_feature(data.get('feature', ''))
|
||||||
|
|
||||||
def set_features(self, jid, node, data):
|
def set_features(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Add or replace all features for a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter should include:
|
||||||
|
features -- The new set of supported features.
|
||||||
|
"""
|
||||||
features = data.get('features', set())
|
features = data.get('features', set())
|
||||||
self.add_node(jid, node)
|
self.add_node(jid, node)
|
||||||
self.nodes[(jid, node)]['info']['features'] = features
|
self.nodes[(jid, node)]['info']['features'] = features
|
||||||
|
|
||||||
def del_feature(self, jid, node, data):
|
def del_feature(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Remove a feature from a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter should include:
|
||||||
|
feature -- The namespace of the removed feature.
|
||||||
|
"""
|
||||||
if (jid, node) not in self.nodes:
|
if (jid, node) not in self.nodes:
|
||||||
return
|
return
|
||||||
self.nodes[(jid, node)]['info'].del_feature(data.get('feature', ''))
|
self.nodes[(jid, node)]['info'].del_feature(data.get('feature', ''))
|
||||||
|
|
||||||
|
def del_features(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Remove all features from a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter is not used.
|
||||||
|
"""
|
||||||
|
if (jid, node) not in self.nodes:
|
||||||
|
return
|
||||||
|
del self.nodes[(jid, node)]['info']['features']
|
||||||
|
|
||||||
def add_item(self, jid, node, data):
|
def add_item(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Add an item to a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter may include:
|
||||||
|
ijid -- The JID for the item.
|
||||||
|
inode -- Optional additional information to reference
|
||||||
|
non-addressable items.
|
||||||
|
name -- Optional human readable name for the item.
|
||||||
|
"""
|
||||||
self.add_node(jid, node)
|
self.add_node(jid, node)
|
||||||
self.nodes[(jid, node)]['items'].add_item(
|
self.nodes[(jid, node)]['items'].add_item(
|
||||||
data.get('ijid', ''),
|
data.get('ijid', ''),
|
||||||
@ -179,6 +251,13 @@ class StaticDisco(object):
|
|||||||
name=data.get('name', None))
|
name=data.get('name', None))
|
||||||
|
|
||||||
def del_item(self, jid, node, data):
|
def del_item(self, jid, node, data):
|
||||||
|
"""
|
||||||
|
Remove an item from a JID/node combination.
|
||||||
|
|
||||||
|
The data parameter may include:
|
||||||
|
ijid -- JID of the item to remove.
|
||||||
|
inode -- Optional extra identifying information.
|
||||||
|
"""
|
||||||
if (jid, node) in self.nodes:
|
if (jid, node) in self.nodes:
|
||||||
self.nodes[(jid, node)]['items'].del_item(
|
self.nodes[(jid, node)]['items'].del_item(
|
||||||
data.get('ijid', ''),
|
data.get('ijid', ''),
|
||||||
|
Loading…
Reference in New Issue
Block a user