diff --git a/msg_html.go b/msg_html.go new file mode 100644 index 0000000..fbb4aae --- /dev/null +++ b/msg_html.go @@ -0,0 +1,20 @@ +package xmpp + +import "encoding/xml" + +type HTML struct { + MsgExtension + XMLName xml.Name `xml:"http://jabber.org/protocol/xhtml-im html"` + Body HTMLBody + Lang string `xml:"xml:lang,attr,omitempty"` +} + +type HTMLBody struct { + XMLName xml.Name `xml:"http://www.w3.org/1999/xhtml body"` + // InnerXML MUST be valid xhtml. We do not check if it is valid when generating the XMPP stanza. + InnerXML string `xml:",innerxml"` +} + +func init() { + TypeRegistry.MapExtension(PKTMessage, xml.Name{"http://jabber.org/protocol/xhtml-im", "html"}, HTML{}) +} diff --git a/msg_html_test.go b/msg_html_test.go new file mode 100644 index 0000000..b88104a --- /dev/null +++ b/msg_html_test.go @@ -0,0 +1,44 @@ +package xmpp_test + +import ( + "encoding/xml" + "testing" + + "gosrc.io/xmpp" +) + +func TestHTMLGen(t *testing.T) { + htmlBody := "
Hello World
" + msg := xmpp.NewMessage(xmpp.Attrs{To: "test@localhost"}) + msg.Body = "Hello World" + body := xmpp.HTMLBody{ + InnerXML: htmlBody, + } + html := xmpp.HTML{Body: body} + msg.Extensions = append(msg.Extensions, html) + + result := msg.XMPPFormat() + str := `Hello World