Software /
code /
verse
Diff
plugins/pep.lua @ 216:3aac084855e6
plugins.pep: Reuse the pubsub plugin.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 08 Sep 2011 18:03:07 +0200 |
parent | 164:d862093d9f91 |
child | 232:5b49de3aa0f3 |
line wrap: on
line diff
--- a/plugins/pep.lua Thu Sep 08 17:51:11 2011 +0200 +++ b/plugins/pep.lua Thu Sep 08 18:03:07 2011 +0200 @@ -3,22 +3,11 @@ local xmlns_pubsub_event = xmlns_pubsub.."#event"; function verse.plugins.pep(stream) + stream:add_plugin("pubsub"); stream.pep = {}; - stream:hook("message", function (message) - local event = message:get_child("event", xmlns_pubsub_event); - if not event then return; end - local items = event:get_child("items"); - if not items then return; end - local node = items.attr.node; - for item in items:childtags() do - if item.name == "item" and item.attr.xmlns == xmlns_pubsub_event then - stream:event("pep/"..node, { - from = message.attr.from, - item = item.tags[1], - }); - end - end + stream:hook("pubsub/event", function(event) + return stream:event("pep/"..event.node, { from = event.from, item = event.item[1] } ); end); function stream:hook_pep(node, callback, priority) @@ -38,11 +27,6 @@ end function stream:publish_pep(item, node) - local publish = verse.iq({ type = "set" }) - :tag("pubsub", { xmlns = xmlns_pubsub }) - :tag("publish", { node = node or item.attr.xmlns }) - :tag("item") - :add_child(item); - return stream:send_iq(publish); + return stream.pubsub:publish(nil, node or item.attr.xmlns, nil, item) end end