view mod_pubsub_post/mod_pubsub_post.lua @ 2712:d89ab70808f6

mod_cloud_notify: fix bug when multiple resources are used This bug was triggered under the rare circumstances that a message arrived and one resource was smacks hibernated while the other one(s) were offline. Then only the hibernated resource but not the offline one(s) (or the other way round) got notified.
author tmolitor <thilo@eightysoft.de>
date Mon, 08 May 2017 18:24:29 +0200
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