plugin XEP-0060: added getConfiguration ad psNodeConfigurationGet bridge method
This commit is contained in:
parent
ba8534ee4f
commit
a022ae21af
2 changed files with 26 additions and 1 deletions
|
|
@ -85,6 +85,7 @@ class XEP_0060(object):
|
|||
self._mam = host.plugins.get('XEP-0313')
|
||||
self._node_cb = {} # dictionnary of callbacks for node (key: node, value: list of callbacks)
|
||||
self.rt_sessions = sat_defer.RTDeferredSessions()
|
||||
host.bridge.addMethod("psNodeConfigurationGet", ".plugin", in_sign='sss', out_sign='a{ss}', method=self._getNodeConfiguration, async=True)
|
||||
host.bridge.addMethod("psDeleteNode", ".plugin", in_sign='sss', out_sign='', method=self._deleteNode, async=True)
|
||||
host.bridge.addMethod("psItemGet", ".plugin", in_sign='ssiassa{ss}s', out_sign='(asa{ss})', method=self._getItems, async=True)
|
||||
host.bridge.addMethod("psRetractItem", ".plugin", in_sign='sssbs', out_sign='', method=self._retractItem, async=True)
|
||||
|
|
@ -391,6 +392,30 @@ class XEP_0060(object):
|
|||
client = self.host.getClient(profile_key)
|
||||
return client.pubsub_client.createNode(service, nodeIdentifier, options)
|
||||
|
||||
def _getNodeConfiguration(self, service_s, nodeIdentifier, profile_key):
|
||||
client = self.host.getClient(profile_key)
|
||||
d = self.getConfiguration(client, jid.JID(service_s) if service_s else None, nodeIdentifier)
|
||||
def serialize(form):
|
||||
# FIXME: better more generic dataform serialisation should be available in SàT
|
||||
return {f.var: unicode(f.value) for f in form.fields.values()}
|
||||
d.addCallback(serialize)
|
||||
return d
|
||||
|
||||
def getConfiguration(self, client, service, nodeIdentifier):
|
||||
request = pubsub.PubSubRequest('configureGet')
|
||||
request.recipient = service
|
||||
request.nodeIdentifier = nodeIdentifier
|
||||
|
||||
def cb(iq):
|
||||
form = data_form.findForm(iq.pubsub.configure,
|
||||
pubsub.NS_PUBSUB_NODE_CONFIG)
|
||||
form.typeCheck()
|
||||
return form
|
||||
|
||||
d = request.send(client.xmlstream)
|
||||
d.addCallback(cb)
|
||||
return d
|
||||
|
||||
def _deleteNode(self, service_s, nodeIdentifier, profile_key):
|
||||
return self.deleteNode(jid.JID(service_s) if service_s else None, nodeIdentifier, profile_key)
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class ANSI(object):
|
|||
|
||||
this method simply merge arguments, and add RESET if is not the last arguments
|
||||
"""
|
||||
# XXX: we expect to have at least on argument
|
||||
# XXX: we expect to have at least one argument
|
||||
if args[-1] != cls.RESET:
|
||||
args = list(args)
|
||||
args.append(cls.RESET)
|
||||
|
|
|
|||
Loading…
Reference in a new issue