Mercurial > prosody-modules
view mod_pubsub_post/mod_pubsub_post.lua @ 2976:df86ce6bb0b4
Implement dummy body message to indicate high priority push
This adds a dummy body sent alongside the push when the original message
also contained a body to indicate a high priority push.
The body can be configured and its contents are generally meaningless
with most app servers because it will be stripped before pushed to the client.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sun, 01 Apr 2018 23:24:33 +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