core: added a mechanism to associate short names to namespaces:
- new internal registerNamespace can be used by a plugin to associate a short name to a namespace - new NamespacesGet bridge method retrieve those associations
This commit is contained in:
parent
4df7673f64
commit
da077485d2
5 changed files with 42 additions and 0 deletions
|
|
@ -504,6 +504,20 @@ class Bridge(object):
|
|||
error_handler = lambda err:errback(dbus_to_bridge_exception(err))
|
||||
return self.db_core_iface.messageSend(to_jid, message, subject, mess_type, extra, profile_key, timeout=const_TIMEOUT, reply_handler=callback, error_handler=error_handler)
|
||||
|
||||
def namespacesGet(self, callback=None, errback=None):
|
||||
if callback is None:
|
||||
error_handler = None
|
||||
else:
|
||||
if errback is None:
|
||||
errback = log.error
|
||||
error_handler = lambda err:errback(dbus_to_bridge_exception(err))
|
||||
kwargs={}
|
||||
if callback is not None:
|
||||
kwargs['timeout'] = const_TIMEOUT
|
||||
kwargs['reply_handler'] = callback
|
||||
kwargs['error_handler'] = error_handler
|
||||
return self.db_core_iface.namespacesGet(**kwargs)
|
||||
|
||||
def paramsRegisterApp(self, xml, security_limit=-1, app='', callback=None, errback=None):
|
||||
if callback is None:
|
||||
error_handler = None
|
||||
|
|
|
|||
|
|
@ -763,3 +763,11 @@ doc_param_0=%(doc_profile_key)s
|
|||
doc_return=session informations, with at least the following keys:
|
||||
jid: current full jid
|
||||
started: date of creation of the session (Epoch time)
|
||||
|
||||
[namespacesGet]
|
||||
type=method
|
||||
category=core
|
||||
sig_in=
|
||||
sig_out=a{ss}
|
||||
doc=Get a dict to short name => whole namespaces
|
||||
doc_return=namespaces mapping
|
||||
|
|
|
|||
|
|
@ -383,6 +383,12 @@ class DbusObject(dbus.service.Object):
|
|||
def messageSend(self, to_jid, message, subject={}, mess_type="auto", extra={}, profile_key="@NONE@", callback=None, errback=None):
|
||||
return self._callback("messageSend", unicode(to_jid), message, subject, unicode(mess_type), extra, unicode(profile_key), callback=callback, errback=errback)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX,
|
||||
in_signature='', out_signature='a{ss}',
|
||||
async_callbacks=None)
|
||||
def namespacesGet(self, ):
|
||||
return self._callback("namespacesGet", )
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX,
|
||||
in_signature='sis', out_signature='',
|
||||
async_callbacks=None)
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ class SAT(service.Service):
|
|||
self.initialised = defer.Deferred()
|
||||
self.profiles = {}
|
||||
self.plugins = {}
|
||||
self._ns_map = {} # map for short name to whole namespace
|
||||
|
||||
self.memory = Memory(self)
|
||||
self.trigger = trigger.TriggerManager() # trigger are used to change SàT behaviour
|
||||
|
|
@ -118,6 +119,7 @@ class SAT(service.Service):
|
|||
self.bridge.register_method("saveParamsTemplate", self.memory.save_xml)
|
||||
self.bridge.register_method("loadParamsTemplate", self.memory.load_xml)
|
||||
self.bridge.register_method("sessionInfosGet", self.getSessionInfos)
|
||||
self.bridge.register_method("namespacesGet", self.getNamespaces)
|
||||
|
||||
self.memory.initialized.addCallback(self._postMemoryInit)
|
||||
|
||||
|
|
@ -955,6 +957,17 @@ class SAT(service.Service):
|
|||
languageSwitch()
|
||||
return help_string
|
||||
|
||||
# misc methods
|
||||
|
||||
def registerNamespace(self, short_name, namespace):
|
||||
"""associate a namespace to a short name"""
|
||||
if short_name in self._ns_map:
|
||||
raise exceptions.ConflictError(u'this short name is already used')
|
||||
self._ns_map[short_name] = namespace
|
||||
|
||||
def getNamespaces(self):
|
||||
return self._ns_map
|
||||
|
||||
def getSessionInfos(self, profile_key):
|
||||
"""compile interesting data on current profile session"""
|
||||
client = self.getClient(profile_key)
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ class Tickets(object):
|
|||
def __init__(self, host):
|
||||
log.info(_(u"Tickets plugin initialization"))
|
||||
self.host = host
|
||||
host.registerNamespace('tickets', NS_TICKETS)
|
||||
self._p = self.host.plugins["XEP-0060"]
|
||||
self._s = self.host.plugins["PUBSUB_SCHEMA"]
|
||||
self._m = self.host.plugins["XEP-0277"]
|
||||
|
|
|
|||
Loading…
Reference in a new issue