diff sat/plugins/plugin_xep_0060.py @ 3272:4c98f4972db5

plugin XEP-0060: fixed payload parsing in sendItem
author Goffi <goffi@goffi.org>
date Mon, 18 May 2020 23:38:21 +0200
parents c2f958dde5d2
children 384283adcce1
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0060.py	Mon May 18 23:37:04 2020 +0200
+++ b/sat/plugins/plugin_xep_0060.py	Mon May 18 23:38:21 2020 +0200
@@ -453,6 +453,7 @@
                   profile_key=C.PROF_KEY_NONE):
         client = self.host.getClient(profile_key)
         service = None if not service else jid.JID(service)
+        payload = generic.parseXml(payload.encode())
         extra = data_format.deserialise(extra_ser)
         d = self.sendItem(
             client, service, nodeIdentifier, payload, item_id or None, extra
@@ -465,7 +466,7 @@
         client = self.host.getClient(profile_key)
         service = None if not service else jid.JID(service)
         try:
-            items = [generic.parseXml(item.encode('utf-8')) for item in items]
+            items = [generic.parseXml(item.encode()) for item in items]
         except Exception as e:
             raise exceptions.DataError(_("Can't parse items: {msg}").format(
                 msg=e))
@@ -492,11 +493,12 @@
         @param service(jid.JID, None): service to send the item to
             None to use PEP
         @param NodeIdentifier(unicode): PubSub node to use
-        @param payload(domish.Element, unicode): payload of the item to send
+        @param payload(domish.Element): payload of the item to send
         @param item_id(unicode, None): id to use or None to create one
         @param extra(dict, None): extra option, not used yet
         @return (unicode, None): id of the created item
         """
+        assert isinstance(payload, domish.Element)
         item_elt = domish.Element((pubsub.NS_PUBSUB, 'item'))
         if item_id is not None:
             item_elt['id'] = item_id