Mercurial > libervia-backend
diff src/memory/disco.py @ 1414:159d16336f87
core, bridge, jp: management of service discovery extensions (XEP-0128)
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 17 Apr 2015 22:59:35 +0200 |
parents | 3265a2639182 |
children | a419da93afef |
line wrap: on
line diff
--- a/src/memory/disco.py Fri Apr 17 10:39:41 2015 +0200 +++ b/src/memory/disco.py Fri Apr 17 22:59:35 2015 +0200 @@ -254,7 +254,24 @@ @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):