core, bridge, jp: management of service discovery extensions (XEP-0128)

This commit is contained in:
Goffi 2015-04-17 22:59:35 +02:00
commit 35108bc5ba

View file

@ -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):