Mercurial > prosody-hg
comparison plugins/mod_pubsub/pubsub.lib.lua @ 12636:e8934ce6ea0f
util.stanza: Add method for extracting a single attribute value
Sometimes you only care about a single attribute, but the child tag
itself may be optional, leading to needing `tag and tag.attr.foo` or
`stanza:find("tag@foo")`.
The `:find()` method is fairly complex, so avoiding it for this kind of
simpler use case is a win.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 17 Aug 2022 19:04:30 +0200 |
| parents | 39ae08180c81 |
| children | 31b22cc221b5 |
comparison
equal
deleted
inserted
replaced
| 12635:f928cb5c5d04 | 12636:e8934ce6ea0f |
|---|---|
| 676 end | 676 end |
| 677 | 677 |
| 678 function handlers.set_retract(origin, stanza, retract, service) | 678 function handlers.set_retract(origin, stanza, retract, service) |
| 679 local node, notify = retract.attr.node, retract.attr.notify; | 679 local node, notify = retract.attr.node, retract.attr.notify; |
| 680 notify = (notify == "1") or (notify == "true"); | 680 notify = (notify == "1") or (notify == "true"); |
| 681 local item = retract:get_child("item"); | 681 local id = retract:get_child_attr("item", nil, "id"); |
| 682 local id = item and item.attr.id | |
| 683 if not (node and id) then | 682 if not (node and id) then |
| 684 origin.send(pubsub_error_reply(stanza, node and "item-not-found" or "nodeid-required")); | 683 origin.send(pubsub_error_reply(stanza, node and "item-not-found" or "nodeid-required")); |
| 685 return true; | 684 return true; |
| 686 end | 685 end |
| 687 local reply, notifier; | 686 local reply, notifier; |
