Software /
code /
prosody-modules
File
mod_pubsub_post/mod_pubsub_post.lua @ 1738:b3f048af2dfe
mod_storage_xmlarchive: The last :seek() should return something truish, if not, don't ignore
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 18 May 2015 02:33:43 +0200 |
parent | 1619:43c54a27bab2 |
child | 3013: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