diff options
Diffstat (limited to 'nbxmpp/modules')
-rw-r--r-- | nbxmpp/modules/message.py | 14 | ||||
-rw-r--r-- | nbxmpp/modules/misc.py | 14 |
2 files changed, 27 insertions, 1 deletions
diff --git a/nbxmpp/modules/message.py b/nbxmpp/modules/message.py index 27ef286..8a708eb 100644 --- a/nbxmpp/modules/message.py +++ b/nbxmpp/modules/message.py @@ -19,8 +19,10 @@ import logging from nbxmpp.protocol import NodeProcessed from nbxmpp.protocol import NS_DATA +from nbxmpp.protocol import NS_XHTML from nbxmpp.structs import StanzaHandler from nbxmpp.structs import StanzaIDData +from nbxmpp.structs import XHTMLData from nbxmpp.util import error_factory from nbxmpp.const import MessageType @@ -79,7 +81,17 @@ class BaseMessage: forms = stanza.getTags('x', namespace=NS_DATA) if forms: properties.forms = forms - properties.xhtml = stanza.getXHTML() + + xhtml = stanza.getXHTML() + if xhtml is None: + return + + if xhtml.getTag('body', namespace=NS_XHTML) is None: + log.warning('xhtml without body found') + log.warning(stanza) + return + + properties.xhtml = XHTMLData(xhtml) @staticmethod def _parse_type(stanza): diff --git a/nbxmpp/modules/misc.py b/nbxmpp/modules/misc.py index 4fdbf4e..02efa8c 100644 --- a/nbxmpp/modules/misc.py +++ b/nbxmpp/modules/misc.py @@ -22,6 +22,7 @@ from nbxmpp.protocol import NS_FORWARD from nbxmpp.protocol import NS_MUC_USER from nbxmpp.protocol import NS_MAM_1 from nbxmpp.protocol import NS_MAM_2 +from nbxmpp.protocol import NS_XHTML from nbxmpp.protocol import NodeProcessed from nbxmpp.protocol import InvalidFrom from nbxmpp.protocol import InvalidStanza @@ -118,3 +119,16 @@ def unwrap_mam(stanza, own_jid): archive=stanza.getFrom(), namespace=result.getNamespace(), timestamp=delay_timestamp) + + +def build_xhtml_body(xhtml, xmllang=None): + try: + if xmllang is not None: + body = '<body xmlns="%s" xml:lang="%s">%s</body>' % ( + NS_XHTML, xmllang, xhtml) + else: + body = '<body xmlns="%s">%s</body>' % (NS_XHTML, xhtml) + except Exception as error: + log.error('Error while building xhtml node: %s', error) + return None + return body |