mirror of
https://github.com/correl/SleekXMPP.git
synced 2024-11-24 03:00:15 +00:00
fixed html-im stanza plugin
This commit is contained in:
parent
dd77d2165d
commit
2384858f5e
3 changed files with 26 additions and 7 deletions
|
@ -202,7 +202,7 @@ class basexmpp(object):
|
||||||
message['body'] = mbody
|
message['body'] = mbody
|
||||||
message['subject'] = msubject
|
message['subject'] = msubject
|
||||||
if mnick is not None: message['nick'] = mnick
|
if mnick is not None: message['nick'] = mnick
|
||||||
if mhtml is not None: message['html'] = mhtml
|
if mhtml is not None: message['html']['html'] = mhtml
|
||||||
return message
|
return message
|
||||||
|
|
||||||
def makePresence(self, pshow=None, pstatus=None, ppriority=None, pto=None, ptype=None, pfrom=None):
|
def makePresence(self, pshow=None, pstatus=None, ppriority=None, pto=None, ptype=None, pfrom=None):
|
||||||
|
|
|
@ -11,24 +11,24 @@ class HTMLIM(ElementBase):
|
||||||
namespace = 'http://jabber.org/protocol/xhtml-im'
|
namespace = 'http://jabber.org/protocol/xhtml-im'
|
||||||
name = 'html'
|
name = 'html'
|
||||||
plugin_attrib = 'html'
|
plugin_attrib = 'html'
|
||||||
interfaces = set(('html'))
|
interfaces = set(('html',))
|
||||||
plugin_attrib_map = set()
|
plugin_attrib_map = set()
|
||||||
plugin_xml_map = set()
|
plugin_xml_map = set()
|
||||||
|
|
||||||
def setHtml(self, html):
|
def setHtml(self, html):
|
||||||
if issinstance(html, str):
|
if isinstance(html, str):
|
||||||
html = ET.XML(html)
|
html = ET.XML(html)
|
||||||
if html.find('{http://www.w3.org/1999/xhtml}body') is None:
|
if html.tag != '{http://www.w3.org/1999/xhtml}body':
|
||||||
body = ET.Element('{http://www.w3.org/1999/xhtml}body')
|
body = ET.Element('{http://www.w3.org/1999/xhtml}body')
|
||||||
body.append(html)
|
body.append(html)
|
||||||
|
self.xml.append(body)
|
||||||
else:
|
else:
|
||||||
body = html
|
self.xml.append(html)
|
||||||
self.xml.append(html)
|
|
||||||
|
|
||||||
def getHtml(self):
|
def getHtml(self):
|
||||||
html = self.xml.find('{http://www.w3.org/1999/xhtml}body')
|
html = self.xml.find('{http://www.w3.org/1999/xhtml}body')
|
||||||
if html is None: return ''
|
if html is None: return ''
|
||||||
return __str__(html)
|
return html
|
||||||
|
|
||||||
def delHtml(self):
|
def delHtml(self):
|
||||||
return self.__del__()
|
return self.__del__()
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
import unittest
|
import unittest
|
||||||
|
from xml.etree import cElementTree as ET
|
||||||
|
|
||||||
class testmessagestanzas(unittest.TestCase):
|
class testmessagestanzas(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
import sleekxmpp.stanza.message as m
|
import sleekxmpp.stanza.message as m
|
||||||
|
from sleekxmpp.basexmpp import stanzaPlugin
|
||||||
|
from sleekxmpp.stanza.htmlim import HTMLIM
|
||||||
|
stanzaPlugin(m.Message, HTMLIM)
|
||||||
self.m = m
|
self.m = m
|
||||||
|
|
||||||
def testGroupchatReplyRegression(self):
|
def testGroupchatReplyRegression(self):
|
||||||
|
@ -21,5 +25,20 @@ class testmessagestanzas(unittest.TestCase):
|
||||||
msg = self.m.Message()
|
msg = self.m.Message()
|
||||||
msg.attrib.attrib.attrib['to'] = 'usr@server.tld'
|
msg.attrib.attrib.attrib['to'] = 'usr@server.tld'
|
||||||
self.failUnless(str(msg['to']) == 'usr@server.tld')
|
self.failUnless(str(msg['to']) == 'usr@server.tld')
|
||||||
|
|
||||||
|
def testHTMLPlugin(self):
|
||||||
|
"Test message/html/html stanza"
|
||||||
|
msgtxt = """<message to="fritzy@netflint.net/sleekxmpp" type="chat"><body>this is the plaintext message</body><html xmlns="http://jabber.org/protocol/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml"><p>This is the htmlim message</p></body></html></message>"""
|
||||||
|
msg = self.m.Message()
|
||||||
|
msg['to'] = "fritzy@netflint.net/sleekxmpp"
|
||||||
|
msg['body'] = "this is the plaintext message"
|
||||||
|
msg['type'] = 'chat'
|
||||||
|
p = ET.Element('{http://www.w3.org/1999/xhtml}p')
|
||||||
|
p.text = "This is the htmlim message"
|
||||||
|
msg['html']['html'] = p
|
||||||
|
msg2 = self.m.Message()
|
||||||
|
values = msg.getValues()
|
||||||
|
msg2.setValues(values)
|
||||||
|
self.failUnless(msgtxt == str(msg) == str(msg2))
|
||||||
|
|
||||||
suite = unittest.TestLoader().loadTestsFromTestCase(testmessagestanzas)
|
suite = unittest.TestLoader().loadTestsFromTestCase(testmessagestanzas)
|
||||||
|
|
Loading…
Reference in a new issue