diff options
author | Kim Alvefur <zash@zash.se> | 2017-10-18 09:08:16 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-10-18 09:08:16 +0200 |
commit | ded629dfb2b868f06f54f4088884c4aef4fd4110 (patch) | |
tree | b95b220ac0dc7133123d79d35eba5e303016251e /plugins/mod_pubsub/pubsub.lib.lua | |
parent | c6acb7668141233af69cb2481c871b9acad17abe (diff) | |
download | prosody-ded629dfb2b868f06f54f4088884c4aef4fd4110.tar.gz prosody-ded629dfb2b868f06f54f4088884c4aef4fd4110.zip |
mod_pubsub: Add support for Create and Configure
Diffstat (limited to 'plugins/mod_pubsub/pubsub.lib.lua')
-rw-r--r-- | plugins/mod_pubsub/pubsub.lib.lua | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/plugins/mod_pubsub/pubsub.lib.lua b/plugins/mod_pubsub/pubsub.lib.lua index e9801e89..49274601 100644 --- a/plugins/mod_pubsub/pubsub.lib.lua +++ b/plugins/mod_pubsub/pubsub.lib.lua @@ -122,8 +122,26 @@ end function handlers.set_create(origin, stanza, create, service) local node = create.attr.node; local ok, ret, reply; + local config; + local configure = stanza.tags[1]:get_child("configure"); + if configure then + local config_form = config:get_child("x", "jabber:x:data"); + if not config_form then + origin.send(st.error_reply(stanza, "modify", "bad-request", "Missing dataform")); + return true; + end + local form_data, err = node_config_form:data(config_form); + if not form_data then + origin.send(st.error_reply(stanza, "modify", "bad-request", err)); + return true; + end + config = { + ["max_items"] = tonumber(form_data["pubsub#max_items"]); + ["persist_items"] = form_data["pubsub#persist_items"]; + }; + end if node then - ok, ret = service:create(node, stanza.attr.from); + ok, ret = service:create(node, stanza.attr.from, config); if ok then reply = st.reply(stanza); else @@ -132,7 +150,7 @@ function handlers.set_create(origin, stanza, create, service) else repeat node = uuid_generate(); - ok, ret = service:create(node, stanza.attr.from); + ok, ret = service:create(node, stanza.attr.from, config); until ok or ret ~= "conflict"; if ok then reply = st.reply(stanza) |