Mercurial > prosody-modules
comparison mod_post_msg/mod_post_msg.lua @ 1302:e556219cb43d
mod_post_msg: add support for HTML messages
| author | Christian Weiske <cweiske@cweiske.de> |
|---|---|
| date | Fri, 14 Feb 2014 15:08:11 +0100 |
| parents | a6c8f252e5fa |
| children | 9b6fbababb8c |
comparison
equal
deleted
inserted
replaced
| 1301:6e4ebdc9b46b | 1302:e556219cb43d |
|---|---|
| 4 local jid_prep = require "util.jid".prep; | 4 local jid_prep = require "util.jid".prep; |
| 5 local msg = require "util.stanza".message; | 5 local msg = require "util.stanza".message; |
| 6 local test_password = require "core.usermanager".test_password; | 6 local test_password = require "core.usermanager".test_password; |
| 7 local b64_decode = require "util.encodings".base64.decode; | 7 local b64_decode = require "util.encodings".base64.decode; |
| 8 local formdecode = require "net.http".formdecode; | 8 local formdecode = require "net.http".formdecode; |
| 9 local xml = require"util.xml"; | |
| 9 | 10 |
| 10 local function require_valid_user(f) | 11 local function require_valid_user(f) |
| 11 return function(event, path) | 12 return function(event, path) |
| 12 local request = event.request; | 13 local request = event.request; |
| 13 local response = event.response; | 14 local response = event.response; |
| 44 if to and request.body then | 45 if to and request.body then |
| 45 message = msg({ to = to, from = authed_user, type = "chat"},request.body); | 46 message = msg({ to = to, from = authed_user, type = "chat"},request.body); |
| 46 end | 47 end |
| 47 elseif body_type == "application/x-www-form-urlencoded" then | 48 elseif body_type == "application/x-www-form-urlencoded" then |
| 48 local post_body = formdecode(request.body); | 49 local post_body = formdecode(request.body); |
| 49 message = msg({ to = post_body.to or to, from = authed_user, | 50 message = msg({ to = post_body.to or to, from = authed_user, |
| 50 type = post_body.type or "chat"}, post_body.body); | 51 type = post_body.type or "chat"}, post_body.body); |
| 52 if post_body.html then | |
| 53 local html, err = xml.parse(post_body.html); | |
| 54 if not html then | |
| 55 module:log("warn", "mod_post_msg: invalid XML: %s", err); | |
| 56 return 400; | |
| 57 end | |
| 58 message:tag("html", {xmlns="http://jabber.org/protocol/xhtml-im"}):add_child(html):up(); | |
| 59 end | |
| 51 else | 60 else |
| 52 return 415; | 61 return 415; |
| 53 end | 62 end |
| 54 if message and message.attr.to then | 63 if message and message.attr.to then |
| 55 module:log("debug", "Sending %s", tostring(message)); | 64 module:log("debug", "Sending %s", tostring(message)); |
