comparison mod_post_msg/mod_post_msg.lua @ 2989:926aaaeb0d21

mod_post_msg: Add support for a JSON based format similar to what mod_component_http uses
author Kim Alvefur <zash@zash.se>
date Wed, 04 Apr 2018 15:55:09 +0200
parents a0375f84d65a
children
comparison
equal deleted inserted replaced
2988:3cc78e6a8758 2989:926aaaeb0d21
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 local xml = require"util.xml";
10 local json = require "util.json";
10 11
11 local function require_valid_user(f) 12 local function require_valid_user(f)
12 return function(event, path) 13 return function(event, path)
13 local request = event.request; 14 local request = event.request;
14 local response = event.response; 15 local response = event.response;
55 module:log("warn", "mod_post_msg: invalid XML: %s", err); 56 module:log("warn", "mod_post_msg: invalid XML: %s", err);
56 return 400; 57 return 400;
57 end 58 end
58 message:tag("html", {xmlns="http://jabber.org/protocol/xhtml-im"}):add_child(html):up(); 59 message:tag("html", {xmlns="http://jabber.org/protocol/xhtml-im"}):add_child(html):up();
59 end 60 end
61 elseif body_type == "application/json" then
62 local post_body = json.decode(request.body);
63 if not post_body then return 400; end
64 message = msg({ to = post_body.to or to, from = authed_user,
65 type = post_body.type or "chat"}, post_body.body);
60 else 66 else
61 return 415; 67 return 415;
62 end 68 end
63 if message and message.attr.to then 69 if message and message.attr.to then
64 module:log("debug", "Sending %s", tostring(message)); 70 module:log("debug", "Sending %s", tostring(message));