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)); |