# HG changeset patch # User Kim Alvefur # Date 1508212026 -7200 # Node ID 2abbb01cd756e302fef1fc27eb7cdd57bf3d4be5 # Parent e89b57d0d80ae8cd52b1f583d7435a466784ab40 pubsub: Distinguish internal representation of node config from XEP-0060 form (util.pubsub should be protocol-agnostic) diff -r e89b57d0d80a -r 2abbb01cd756 plugins/mod_pep_plus.lua --- a/plugins/mod_pep_plus.lua Tue Oct 17 05:30:09 2017 +0200 +++ b/plugins/mod_pep_plus.lua Tue Oct 17 05:47:06 2017 +0200 @@ -43,7 +43,7 @@ local function simple_itemstore(username) return function (config, node) - if config["pubsub#persist_items"] then + if config["persist_items"] then module:log("debug", "Creating new persistent item store for user %s, node %q", username, node); known_nodes_map:set(username, node, true); local archive = module:open_store("pep_"..node, "archive"); @@ -51,7 +51,7 @@ else module:log("debug", "Creating new ephemeral item store for user %s, node %q", username, node); known_nodes_map:set(username, node, nil); - return cache.new(tonumber(config["pubsub#max_items"])); + return cache.new(tonumber(config["max_items"])); end end end @@ -179,8 +179,8 @@ }; node_defaults = { - ["pubsub#max_items"] = "1"; - ["pubsub#persist_items"] = true; + ["max_items"] = 1; + ["persist_items"] = true; }; autocreate_on_publish = true; diff -r e89b57d0d80a -r 2abbb01cd756 plugins/mod_pubsub/pubsub.lib.lua --- a/plugins/mod_pubsub/pubsub.lib.lua Tue Oct 17 05:30:09 2017 +0200 +++ b/plugins/mod_pubsub/pubsub.lib.lua Tue Oct 17 05:47:06 2017 +0200 @@ -282,10 +282,15 @@ return true; end + local node_config = node_obj.config; + local pubsub_form_data = { + ["pubsub#max_items"] = tostring(node_config["max_items"]); + ["pubsub#persist_items"] = node_config["persist_items"] + } local reply = st.reply(stanza) :tag("pubsub", { xmlns = xmlns_pubsub_owner }) :tag("configure", { node = node }) - :add_child(node_config_form:form(node_obj.config)); + :add_child(node_config_form:form(pubsub_form_data)); origin.send(reply); return true; end @@ -305,11 +310,15 @@ origin.send(st.error_reply(stanza, "modify", "bad-request", "Missing dataform")); return true; end - local new_config, err = node_config_form:data(config_form); - if not new_config then + 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 + local new_config = { + ["max_items"] = tonumber(form_data["pubsub#max_items"]); + ["persist_items"] = form_data["pubsub#persist_items"]; + }; local ok, err = service:set_node_config(node, stanza.attr.from, new_config); if not ok then origin.send(pubsub_error_reply(stanza, err)); @@ -320,10 +329,14 @@ end function handlers.get_default(origin, stanza, default, service) + local pubsub_form_data = { + ["pubsub#max_items"] = tostring(service.node_defaults["max_items"]); + ["pubsub#persist_items"] = service.node_defaults["persist_items"] + } local reply = st.reply(stanza) :tag("pubsub", { xmlns = xmlns_pubsub_owner }) :tag("default") - :add_child(node_config_form:form(service.node_defaults)); + :add_child(node_config_form:form(pubsub_form_data)); origin.send(reply); return true; end diff -r e89b57d0d80a -r 2abbb01cd756 util/pubsub.lua --- a/util/pubsub.lua Tue Oct 17 05:30:09 2017 +0200 +++ b/util/pubsub.lua Tue Oct 17 05:47:06 2017 +0200 @@ -5,13 +5,14 @@ local service_mt = { __index = service }; local default_config = { __index = { - itemstore = function (config, _) return cache.new(tonumber(config["pubsub#max_items"])) end; + itemstore = function (config, _) return cache.new(config["max_items"]) end; broadcaster = function () end; get_affiliation = function () end; capabilities = {}; } }; local default_node_config = { __index = { - ["pubsub#max_items"] = "20"; + ["persist_items"] = false; + ["max_items"] = 20; } }; local function new(config)