<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed><type>rich</type><version>1.0</version><provider_name>phorkie</provider_name><provider_url>https://p.cweiske.de/</provider_url><title>prosody stanza parse xml</title><author_name>Christian Weiske</author_name><cache_age>86400</cache_age><width>900</width><height>900</height><html>&lt;!-- embedding all files of https://p.cweiske.de/84 --&gt;
&lt;link rel="stylesheet" href="https://p.cweiske.de/css/embed.css"/&gt;
&lt;div class="phork" id="84"&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  
&lt;div class="document"&gt;


&lt;p&gt;support custom HTML messages in prosody's mod_post_msg plugin.&lt;/p&gt;
&lt;p&gt;has been integrated into prosody_modules; see &lt;a class="reference external" href="https://code.google.com/p/prosody-modules/source/detail?r=e556219cb43d7af6f2a0564e8abf8a614e661be0"&gt;https://code.google.com/p/prosody-modules/source/detail?r=e556219cb43d7af6f2a0564e8abf8a614e661be0&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/84/rev-raw/f2edec9ddbe9e7fa117bd63e2fcc662ea1b72790/README.rst" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/84#README.rst"&gt;README.rst&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.diff .de1, .diff .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.diff  {font-family:monospace;}
.diff .imp {font-weight: bold; color: red;}
.diff li, .diff .li1 {color: #DDD;}
.diff .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.diff .kw1 {color: #aaaaaa; font-style: italic;}
.diff .re0 {color: #440088;}
.diff .re1 {color: #991111;}
.diff .re2 {color: #00b000;}
.diff .re3 {color: #888822;}
.diff .re4 {color: #888822;}
.diff .re5 {color: #0011dd;}
.diff .re6 {color: #440088;}
.diff .re7 {color: #991111;}
.diff .re8 {color: #00b000;}
.diff .re9 {color: #888822;}
.diff span.xtra { display:block; }
&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="diff"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;&amp;#160;HG changeset patch
# User Christian Weiske &amp;lt;cweiske@cweiske.de&amp;gt;
# Date &lt;span class="nu0"&gt;1392386891&lt;/span&gt; -&lt;span class="nu0"&gt;3600&lt;/span&gt;
# Node ID 46f6f3b&lt;span class="re0"&gt;7c8926&lt;/span&gt;da&lt;span class="re0"&gt;0d79&lt;/span&gt;fee2457b25936f33f&lt;span class="re0"&gt;98d4&lt;/span&gt;
# Parent &amp;#160;&lt;span class="re0"&gt;9700c89&lt;/span&gt;f7bf67cc27862743f46f1192e&lt;span class="re0"&gt;0a1069&lt;/span&gt;e9
mod_post_msg: add support for HTML messages
&amp;#160;
diff -r &lt;span class="re0"&gt;9700c89&lt;/span&gt;f7bf6 -r 46f6f3b&lt;span class="re0"&gt;7c892&lt;/span&gt; mod_post_msg/mod_post_msg.lua
&lt;span class="re3"&gt;--- a/mod_post_msg/mod_post_msg.lua &amp;#160; &amp;#160; Thu Jan 23 20:27:14 2014 +0000&lt;/span&gt;
&lt;span class="re4"&gt;+++ b/mod_post_msg/mod_post_msg.lua &amp;#160; &amp;#160; Fri Feb 14 15:08:11 2014 +0100&lt;/span&gt;
&lt;span class="re6"&gt;@@ -6,6 +6,7 @@&lt;/span&gt;
&amp;#160;local test_password = require &amp;quot;core.usermanager&amp;quot;.test_password;
&amp;#160;local b64_decode = require &amp;quot;util.encodings&amp;quot;.base64.decode;
&amp;#160;local formdecode = require &amp;quot;net.http&amp;quot;.formdecode;
&lt;span class="re8"&gt;+local xml = require&amp;quot;util.xml&amp;quot;;&lt;/span&gt;
&amp;#160;
&amp;#160;local function require_valid_user&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;f&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; return function&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;event, path&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&lt;span class="re6"&gt;@@ -46,8 +47,16 @@&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; end
&amp;#160; &amp;#160; &amp;#160; &amp;#160; elseif body_type == &amp;quot;application/x-www-form-urlencoded&amp;quot; then
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; local post_body = formdecode&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;request.body&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re7"&gt;- &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; message = msg&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt; to = post_body.to or to, from = authed_user,&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; message = msg&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt; to = post_body.to or to, from = authed_user,&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; type = post_body.type or &amp;quot;chat&amp;quot;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;, post_body.body&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; if post_body.html then&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;local html, err = xml.parse&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;post_body.html&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;if not html then&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; module:log&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&amp;quot;warn&amp;quot;, &amp;quot;mod_post_msg: invalid XML: %s&amp;quot;, err&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; return &lt;span class="nu0"&gt;400&lt;/span&gt;;&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;end&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;message:tag&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&amp;quot;html&amp;quot;, &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;xmlns=&amp;quot;http://jabber.org/protocol/xhtml-im&amp;quot;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;:add_child&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;html&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;:up&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/span&gt;
&lt;span class="re8"&gt;+ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; end&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; else
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; return &lt;span class="nu0"&gt;415&lt;/span&gt;;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; end
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/84/rev-raw/f2edec9ddbe9e7fa117bd63e2fcc662ea1b72790/mod_post_msg.lua.diff" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/84#mod_post_msg.lua.diff"&gt;mod_post_msg.lua.diff&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</html></oembed>
