Mercurial > prosody-hg
comparison plugins/mod_pubsub/mod_pubsub.lua @ 13585:8091c1b8023e
mod_pubsub: Expand shell commands to include node/item management
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 07 Jan 2025 14:27:18 +0000 |
| parents | eae0272b87e3 |
| children | 0338a5569178 |
comparison
equal
deleted
inserted
replaced
| 13584:0f265142117a | 13585:8091c1b8023e |
|---|---|
| 272 | 272 |
| 273 local function get_service(service_jid) | 273 local function get_service(service_jid) |
| 274 return assert(assert(prosody.hosts[service_jid], "Unknown pubsub service").modules.pubsub, "Not a pubsub service").service; | 274 return assert(assert(prosody.hosts[service_jid], "Unknown pubsub service").modules.pubsub, "Not a pubsub service").service; |
| 275 end | 275 end |
| 276 | 276 |
| 277 module:add_item("shell-command", { | 277 module:require("commands").add_commands(get_service); |
| 278 section = "pubsub"; | |
| 279 section_desc = "Manage publish/subscribe nodes"; | |
| 280 name = "create_node"; | |
| 281 desc = "Create a node with the specified name"; | |
| 282 args = { | |
| 283 { name = "service_jid", type = "string" }; | |
| 284 { name = "node_name", type = "string" }; | |
| 285 }; | |
| 286 host_selector = "service_jid"; | |
| 287 | |
| 288 handler = function (self, service_jid, node_name) --luacheck: ignore 212/self | |
| 289 return get_service(service_jid):create(node_name, true); | |
| 290 end; | |
| 291 }); | |
| 292 | |
| 293 module:add_item("shell-command", { | |
| 294 section = "pubsub"; | |
| 295 section_desc = "Manage publish/subscribe nodes"; | |
| 296 name = "list_nodes"; | |
| 297 desc = "List nodes on a pubsub service"; | |
| 298 args = { | |
| 299 { name = "service_jid", type = "string" }; | |
| 300 }; | |
| 301 host_selector = "service_jid"; | |
| 302 | |
| 303 handler = function (self, service_jid) --luacheck: ignore 212/self | |
| 304 -- luacheck: ignore 431/service | |
| 305 local service = get_service(service_jid); | |
| 306 local nodes = select(2, assert(service:get_nodes(true))); | |
| 307 local count = 0; | |
| 308 for node_name in pairs(nodes) do | |
| 309 count = count + 1; | |
| 310 self.session.print(node_name); | |
| 311 end | |
| 312 return true, ("%d nodes"):format(count); | |
| 313 end; | |
| 314 }); |
