view mod_pubsub_post/mod_pubsub_post.lua @ 2608:362ca94192ee

mod_smacks: Add resumed session to event "smacks-hibernation-end" Older versions of this event only have the "intermediate" session in event.session (the one used to resume the existing session), but not the resumed one. This adds event.resumed which contains the resumed one alongside to event.session.
author tmolitor <thilo@eightysoft.de>
date Sat, 11 Mar 2017 01:37:28 +0100
parents 43c54a27bab2
children 8bfba31a1f8b
line wrap: on
line source

module:depends("http");

local st = require "util.stanza";
local json = require "util.json";
local formdecode = require "net.http".formdecode;
local uuid_generate = require "util.uuid".generate;
local timestamp_generate = require "util.datetime".datetime;

local pubsub_service = module:depends("pubsub").service;

function handle_POST(event, path)
	local data = event.request.body;
	local item_id = "default";

	local post_item = st.stanza("item", { id = item_id, xmlns = "http://jabber.org/protocol/pubsub" })
		:tag("entry", { xmlns = "http://www.w3.org/2005/Atom" })
			:tag("id"):text(uuid_generate()):up()
			:tag("title"):text(data):up()
			:tag("author")
				:tag("name"):text(event.request.conn:ip()):up()
				:up()
			:tag("published"):text(timestamp_generate()):up();
	
	local ok, err = pubsub_service:publish(path, true, item_id, post_item);
	module:log("debug", "Handled POST: \n%s\n", tostring(event.request.body));
	return ok and "Posted" or ("Error: "..err);
end

module:provides("http", {
	route = {
		["POST /*"] = handle_POST;
	};
});

function module.load()
	module:log("debug", "Loaded at %s", module:http_url());
end