mirror of
https://github.com/correl/SleekXMPP.git
synced 2024-11-27 19:19:54 +00:00
80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
"""
|
|
SleekXMPP: The Sleek XMPP Library
|
|
Copyright (C) 2010 Nathanael C. Fritz
|
|
This file is part of SleekXMPP.
|
|
|
|
See the file LICENSE for copying permission.
|
|
"""
|
|
|
|
from sleekxmpp.stanza import Message
|
|
from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin
|
|
from sleekxmpp.xmlstream.stanzabase import ElementBase, ET
|
|
|
|
|
|
class HTMLIM(ElementBase):
|
|
|
|
"""
|
|
XEP-0071: XHTML-IM defines a method for embedding XHTML content
|
|
within a <message> stanza so that lightweight markup can be used
|
|
to format the message contents and to create links.
|
|
|
|
Only a subset of XHTML is recommended for use with XHTML-IM.
|
|
See the full spec at 'http://xmpp.org/extensions/xep-0071.html'
|
|
for more information.
|
|
|
|
Example stanza:
|
|
<message to="user@example.com">
|
|
<body>Non-html message content.</body>
|
|
<html xmlns="http://jabber.org/protocol/xhtml-im">
|
|
<body xmlns="http://www.w3.org/1999/xhtml">
|
|
<p><b>HTML!</b></p>
|
|
</body>
|
|
</html>
|
|
</message>
|
|
|
|
Stanza Interface:
|
|
body -- The contents of the HTML body tag.
|
|
|
|
Methods:
|
|
getBody -- Return the HTML body contents.
|
|
setBody -- Set the HTML body contents.
|
|
delBody -- Remove the HTML body contents.
|
|
"""
|
|
|
|
namespace = 'http://jabber.org/protocol/xhtml-im'
|
|
name = 'html'
|
|
interfaces = set(('body',))
|
|
plugin_attrib = name
|
|
|
|
def setBody(self, html):
|
|
"""
|
|
Set the contents of the HTML body.
|
|
|
|
Arguments:
|
|
html -- Either a string or XML object. If the top level
|
|
element is not <body> with a namespace of
|
|
'http://www.w3.org/1999/xhtml', it will be wrapped.
|
|
"""
|
|
if isinstance(html, str):
|
|
html = ET.XML(html)
|
|
if html.tag != '{http://www.w3.org/1999/xhtml}body':
|
|
body = ET.Element('{http://www.w3.org/1999/xhtml}body')
|
|
body.append(html)
|
|
self.xml.append(body)
|
|
else:
|
|
self.xml.append(html)
|
|
|
|
def getBody(self):
|
|
"""Return the contents of the HTML body."""
|
|
html = self.xml.find('{http://www.w3.org/1999/xhtml}body')
|
|
if html is None:
|
|
return ''
|
|
return html
|
|
|
|
def delBody(self):
|
|
"""Remove the HTML body contents."""
|
|
if self.parent is not None:
|
|
self.parent().xml.remove(self.xml)
|
|
|
|
|
|
registerStanzaPlugin(Message, HTMLIM)
|