core (disco): added discoInfos and discoItems bridge methods
This commit is contained in:
parent
9d24e951d3
commit
e95d04b69e
5 changed files with 63 additions and 2 deletions
|
|
@ -119,6 +119,12 @@ class DBusBridgeFrontend(BridgeFrontend):
|
|||
def delContact(self, entity_jid, profile_key="@DEFAULT@"):
|
||||
return self.db_core_iface.delContact(entity_jid, profile_key)
|
||||
|
||||
def discoInfos(self, entity_jid, profile_key, callback=None, errback=None):
|
||||
return self.db_core_iface.discoInfos(entity_jid, profile_key, reply_handler=callback, error_handler=lambda err:errback(err._dbus_error_name[len(const_ERROR_PREFIX)+1:]))
|
||||
|
||||
def discoItems(self, entity_jid, profile_key, callback=None, errback=None):
|
||||
return self.db_core_iface.discoItems(entity_jid, profile_key, reply_handler=callback, error_handler=lambda err:errback(err._dbus_error_name[len(const_ERROR_PREFIX)+1:]))
|
||||
|
||||
def disconnect(self, profile_key="@DEFAULT@"):
|
||||
return self.db_core_iface.disconnect(profile_key)
|
||||
|
||||
|
|
|
|||
|
|
@ -233,6 +233,18 @@ class DbusObject(dbus.service.Object):
|
|||
def delContact(self, entity_jid, profile_key="@DEFAULT@"):
|
||||
return self._callback("delContact", unicode(entity_jid), unicode(profile_key))
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX,
|
||||
in_signature='ss', out_signature='(asa(sss))',
|
||||
async_callbacks=('callback', 'errback'))
|
||||
def discoInfos(self, entity_jid, profile_key, callback=None, errback=None):
|
||||
return self._callback("discoInfos", unicode(entity_jid), unicode(profile_key), callback=callback, errback=errback)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX,
|
||||
in_signature='ss', out_signature='a(sss)',
|
||||
async_callbacks=('callback', 'errback'))
|
||||
def discoItems(self, entity_jid, profile_key, callback=None, errback=None):
|
||||
return self._callback("discoItems", unicode(entity_jid), unicode(profile_key), callback=callback, errback=errback)
|
||||
|
||||
@dbus.service.method(const_INT_PREFIX+const_CORE_SUFFIX,
|
||||
in_signature='s', out_signature='',
|
||||
async_callbacks=None)
|
||||
|
|
|
|||
|
|
@ -584,7 +584,7 @@ doc_return=dict with progress information:
|
|||
[getMenus]
|
||||
type=method
|
||||
category=core
|
||||
sig_in= si
|
||||
sig_in=si
|
||||
sig_out=a(ssasas)
|
||||
doc=Get all additional menus
|
||||
doc_param_0=language: language in which the menu should be translated (empty string for default)
|
||||
|
|
@ -607,3 +607,24 @@ doc_param_0=menu_id: id of the menu (same as callback_id)
|
|||
doc_param_1=language: language in which the menu should be translated (empty string for default)
|
||||
doc_return=Translated help string
|
||||
|
||||
[discoInfos]
|
||||
async=
|
||||
type=method
|
||||
category=core
|
||||
sig_in=ss
|
||||
sig_out=(asa(sss))
|
||||
doc=Discover infos on an entity
|
||||
doc_param_0=entity_jid: JID to discover
|
||||
doc_param_1=%(doc_profile_key)s
|
||||
doc_return=discovery data
|
||||
|
||||
[discoItems]
|
||||
async=
|
||||
type=method
|
||||
category=core
|
||||
sig_in=ss
|
||||
sig_out=a(sss)
|
||||
doc=Discover items of an entity
|
||||
doc_param_0=entity_jid: JID to discover
|
||||
doc_param_1=%(doc_profile_key)s
|
||||
doc_return=array of tuple (entity, node identifier, name)
|
||||
|
|
|
|||
|
|
@ -135,6 +135,8 @@ class SAT(service.Service):
|
|||
self.bridge.register("getProgress", self.getProgress)
|
||||
self.bridge.register("getMenus", self.getMenus)
|
||||
self.bridge.register("getMenuHelp", self.getMenuHelp)
|
||||
self.bridge.register("discoInfos", self.memory.disco._discoInfos)
|
||||
self.bridge.register("discoItems", self.memory.disco._discoItems)
|
||||
|
||||
self.memory.initialized.addCallback(self._postMemoryInit)
|
||||
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ class Discovery(object):
|
|||
|
||||
@param jid_: jid of the target, or None for profile's server
|
||||
@param profile_key: %(doc_profile_key)s
|
||||
@return: a Deferred which fire disco.DiscoInfo
|
||||
@return: a Deferred which fire disco.DiscoItems
|
||||
"""
|
||||
client = self.host.getClient(profile_key)
|
||||
if jid_ is None:
|
||||
|
|
@ -212,3 +212,23 @@ class Discovery(object):
|
|||
cap_hash = b64encode(sha1(''.join(s)).digest())
|
||||
debug(_('Capability hash generated: [%s]') % cap_hash)
|
||||
return cap_hash
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _discoInfos(self, entity_jid_s, profile_key=C.PROF_KEY_NONE):
|
||||
""" Discovery method for the bridge
|
||||
@param entity_jid_s: entity we want to discover
|
||||
|
||||
@return: list of tu"""
|
||||
entity = jid.JID(entity_jid_s)
|
||||
disco_infos = yield self.getInfos(entity, profile_key)
|
||||
defer.returnValue((disco_infos.features, [(cat, type_, name or '') for (cat, type_), name in disco_infos.identities.items()]))
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _discoItems(self, entity_jid_s, profile_key=C.PROF_KEY_NONE):
|
||||
""" Discovery method for the bridge
|
||||
@param entity_jid_s: entity we want to discover
|
||||
|
||||
@return: list of tu"""
|
||||
entity = jid.JID(entity_jid_s)
|
||||
disco_items = yield self.getItems(entity, profile_key)
|
||||
defer.returnValue([(item.entity.full(), item.nodeIdentifier or '', item.name or '') for item in disco_items])
|
||||
|
|
|
|||
Loading…
Reference in a new issue