Software / code / verse
Comparison
plugins/pubsub.lua @ 154:a4dc96890729
plugins.pubsub, squishy: New pubsub plugin (basic)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 16 Nov 2010 11:49:42 +0000 |
| child | 159:88cc513e81c8 |
comparison
equal
deleted
inserted
replaced
| 153:f7c705485a2a | 154:a4dc96890729 |
|---|---|
| 1 local jid_bare = require "util.jid".bare; | |
| 2 | |
| 3 local xmlns_pubsub = "http://jabber.org/protocol/pubsub"; | |
| 4 local xmlns_pubsub_event = "http://jabber.org/protocol/pubsub#event"; | |
| 5 local xmlns_pubsub_errors = "http://jabber.org/protocol/pubsub#errors"; | |
| 6 | |
| 7 local pubsub = {}; | |
| 8 local pubsub_mt = { __index = pubsub }; | |
| 9 | |
| 10 function verse.plugins.pubsub(stream) | |
| 11 stream.pubsub = setmetatable({ stream = stream }, pubsub_mt); | |
| 12 end | |
| 13 | |
| 14 function pubsub:subscribe(server, node, jid, callback) | |
| 15 self.stream:send_iq(verse.iq({ to = server, type = "set" }) | |
| 16 :tag("pubsub", { xmlns = xmlns_pubsub }) | |
| 17 :tag("subscribe", { node = node, jid = jid or jid_bare(self.stream.jid) }) | |
| 18 , function (result) | |
| 19 if callback then | |
| 20 if result.attr.type == "result" then | |
| 21 callback(true); | |
| 22 else | |
| 23 callback(false, result:get_error()); | |
| 24 end | |
| 25 end | |
| 26 end | |
| 27 ); | |
| 28 end | |
| 29 | |
| 30 function pubsub:publish(server, node, id, item, callback) | |
| 31 self.stream:send_iq(verse.iq({ to = server, type = "set" }) | |
| 32 :tag("pubsub", { xmlns = xmlns_pubsub }) | |
| 33 :tag("publish", { node = node }) | |
| 34 :tag("item", { id = id }) | |
| 35 :add_child(item) | |
| 36 , function (result) | |
| 37 if callback then | |
| 38 if result.attr.type == "result" then | |
| 39 callback(true); | |
| 40 else | |
| 41 callback(false, result:get_error()); | |
| 42 end | |
| 43 end | |
| 44 end | |
| 45 ); | |
| 46 end |