aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorFlorian Zeitz <florob@babelmonkeys.de>2010-12-01 23:38:47 +0100
committerFlorian Zeitz <florob@babelmonkeys.de>2010-12-01 23:38:47 +0100
commitf85b16f9fa8e1fde7abda68f0da1b024c926807c (patch)
treec87ae84d4766c375c9d47feb950ce08b99455080 /plugins
parent2fd7797f35de1e31834e53d8a87f907f286b6afb (diff)
downloadprosody-f85b16f9fa8e1fde7abda68f0da1b024c926807c.tar.gz
prosody-f85b16f9fa8e1fde7abda68f0da1b024c926807c.zip
mod_pubsub, util.pubsub: Support node creation
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_pubsub.lua22
1 files changed, 22 insertions, 0 deletions
diff --git a/plugins/mod_pubsub.lua b/plugins/mod_pubsub.lua
index da2070f3..f92d27aa 100644
--- a/plugins/mod_pubsub.lua
+++ b/plugins/mod_pubsub.lua
@@ -55,6 +55,28 @@ function handlers.get_items(origin, stanza, items)
return origin.send(reply);
end
+function handlers.set_create(origin, stanza, create)
+ local node = create.attr.node;
+ local ok, ret, reply;
+ if node then
+ ok, ret = service:create(node, stanza.attr.from);
+ if ok then
+ reply = st.reply(stanza);
+ else
+ reply = st.error_reply(stanza, "cancel", ret);
+ end
+ else
+ repeat
+ node = uuid_generate();
+ ok, ret = service:create(node, stanza.attr.from);
+ until ok;
+ reply = st.reply(stanza)
+ :tag("pubsub", { xmlns = xmlns_pubsub })
+ :tag("create", { node = node });
+ end
+ origin.send(reply);
+end
+
function handlers.set_subscribe(origin, stanza, subscribe)
local node, jid = subscribe.attr.node, subscribe.attr.jid;
if jid_bare(jid) ~= jid_bare(stanza.attr.from) then