From c4ac825c8f44c5e4b7d17f387d0d0bec2fe7f88e Mon Sep 17 00:00:00 2001 From: Goffi Date: Wed, 9 Mar 2016 16:59:29 +0100 Subject: [PATCH] plugin XEP-0060: service, node and uri are added to metadata when doing a getItems --- src/plugins/plugin_xep_0060.py | 9 ++++++--- src/tools/xml_tools.py | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/plugins/plugin_xep_0060.py b/src/plugins/plugin_xep_0060.py index d2073904..7fde5e4c 100755 --- a/src/plugins/plugin_xep_0060.py +++ b/src/plugins/plugin_xep_0060.py @@ -281,6 +281,7 @@ class XEP_0060(object): - list of items - metadata with the following keys: - rsm_first, rsm_last, rsm_count, rsm_index: first, last, count and index value of RSMResponse + - service, node: service and node used """ if rsm_request and item_ids: raise ValueError(u"items_id can't be used with rsm") @@ -328,10 +329,12 @@ class XEP_0060(object): def addMetadata(result): items, rsm_response = result + metadata = {'service': service or client.jid.host, + 'node': node, + 'uri': self.getNodeURI(service, node), + } if rsm_request is not None and rsm_response is not None: - metadata = {'rsm_{}'.format(key): value for key, value in rsm_response.toDict().iteritems()} - else: - metadata = {} + metadata.update({'rsm_{}'.format(key): value for key, value in rsm_response.toDict().iteritems()}) return (items, metadata) d.addCallback(addMetadata) diff --git a/src/tools/xml_tools.py b/src/tools/xml_tools.py index e5361f83..c901fc70 100644 --- a/src/tools/xml_tools.py +++ b/src/tools/xml_tools.py @@ -39,6 +39,7 @@ SAT_PARAM_SEPARATOR = "_XMLUI_PARAM_" # used to have unique elements names html_entity_re = re.compile(r'&([a-zA-Z]+?);') XML_ENTITIES = ('quot', 'amp', 'apos', 'lt', 'gt') +# TODO: move XMLUI stuff in a separate module # Helper functions