core, bridge, jp: management of service discovery extensions (XEP-0128)
This commit is contained in:
parent
c50e5adb72
commit
35108bc5ba
1 changed files with 69 additions and 22 deletions
|
|
@ -254,7 +254,24 @@ class Discovery(object):
|
|||
@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()]))
|
||||
extensions = {}
|
||||
for form_type, form in disco_infos.extensions.items():
|
||||
fields = []
|
||||
for field in form.fieldList:
|
||||
data = {'type': field.fieldType}
|
||||
for attr in ('var', 'label', 'desc'):
|
||||
value = getattr(field, attr)
|
||||
if value is not None:
|
||||
data[attr] = value
|
||||
|
||||
values = [field.value] if field.value is not None else field.values
|
||||
fields.append((data, values))
|
||||
|
||||
extensions[form_type or ""] = fields
|
||||
|
||||
defer.returnValue((disco_infos.features,
|
||||
[(cat, type_, name or '') for (cat, type_), name in disco_infos.identities.items()],
|
||||
extensions))
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _discoItems(self, entity_jid_s, profile_key=C.PROF_KEY_NONE):
|
||||
|
|
|
|||
Loading…
Reference in a new issue