diff options
author | Kim Alvefur <zash@zash.se> | 2018-07-06 18:00:50 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2018-07-06 18:00:50 +0200 |
commit | 8408229cbeb8f92dae2e9ff12a265fd4837cd7e2 (patch) | |
tree | 450f33edea7b64563c14a4f538fbacc1e98a5219 /plugins/mod_pubsub/pubsub.lib.lua | |
parent | 8186130fdeb93daf8975847dd6b37030a1311cd1 (diff) | |
download | prosody-8408229cbeb8f92dae2e9ff12a265fd4837cd7e2.tar.gz prosody-8408229cbeb8f92dae2e9ff12a265fd4837cd7e2.zip |
mod_pubsub: Move service discovery to pubsub.lib to allow reuse
Diffstat (limited to 'plugins/mod_pubsub/pubsub.lib.lua')
-rw-r--r-- | plugins/mod_pubsub/pubsub.lib.lua | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/plugins/mod_pubsub/pubsub.lib.lua b/plugins/mod_pubsub/pubsub.lib.lua index 0aedda1a..83fba1fc 100644 --- a/plugins/mod_pubsub/pubsub.lib.lua +++ b/plugins/mod_pubsub/pubsub.lib.lua @@ -138,6 +138,30 @@ function _M.get_feature_set(service) return supported_features; end +function _M.handle_disco_info_node(event, service) + local stanza, reply, node = event.stanza, event.reply, event.node; + local ok, ret = service:get_nodes(stanza.attr.from); + local node_obj = ret[node]; + if not ok or not node_obj then + return; + end + event.exists = true; + reply:tag("identity", { category = "pubsub", type = "leaf" }):up(); +end + +function _M.handle_disco_items_node(event, service) + local stanza, reply, node = event.stanza, event.reply, event.node; + local ok, ret = service:get_items(node, stanza.attr.from); + if not ok then + return; + end + + for _, id in ipairs(ret) do + reply:tag("item", { jid = module.host, name = id }):up(); + end + event.exists = true; +end + function _M.handle_pubsub_iq(event, service) local origin, stanza = event.origin, event.stanza; local pubsub_tag = stanza.tags[1]; |