File

mod_http_rest/mod_http_rest.lua @ 4935:a85efae90e21

mod_rest: Expand mapping of XEP-0045 join stanza The previous 'join' mapping was apparently lost in translation when swithing to datamapper, so might as well map some properties allowing history control. Usually you probably want either zero history or history since the last known time of being joined. Maybe that the former should be the default?
author Kim Alvefur <zash@zash.se>
date Sat, 30 Apr 2022 01:00:01 +0200 (2022-04-29)
parent 2336:79432b859d21
line wrap: on
line source
module:depends"http"

local jid_split = require "util.jid".split;
local jid_prep = require "util.jid".prep;
local stanza = require "util.stanza";
local test_password = require "core.usermanager".test_password;
local b64_decode = require "util.encodings".base64.decode;
local formdecode = require "net.http".formdecode;
local xml = require"util.xml";

local function handle_post(event, path, authed_user)
	local request = event.request;
	local headers = request.headers;
	local body_type = headers.content_type;
	if body_type == "text/xml" and request.body then
        local parsed, err = xml.parse(request.body);
        if parsed then
            module:log("debug", "Sending %s", parsed);
            module:send(parsed);
            return 201;
        end
	else
		return 415;
	end
	return 422;
end

module:provides("http", {
	default_path = "/rest";
	route = {
		["POST"] = handle_post;
		OPTIONS = function(e)
			local headers = e.response.headers;
			headers.allow = "POST";
			headers.accept = "test/xml";
			return 200;
		end;
	}
});