plugins/pep.lua

Mon, 28 Nov 2011 17:16:04 +0100

author
Kim Alvefur <zash@zash.se>
date
Mon, 28 Nov 2011 17:16:04 +0100
changeset 249
00891a675634
parent 232
5b49de3aa0f3
child 250
a5ac643a7fd6
permissions
-rw-r--r--

plugins.pep: Use the new PubSub api.

114
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local xmlns_pubsub = "http://jabber.org/protocol/pubsub";
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local xmlns_pubsub_event = xmlns_pubsub.."#event";
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 function verse.plugins.pep(stream)
216
3aac084855e6 plugins.pep: Reuse the pubsub plugin.
Kim Alvefur <zash@zash.se>
parents: 164
diff changeset
6 stream:add_plugin("pubsub");
114
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 stream.pep = {};
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
216
3aac084855e6 plugins.pep: Reuse the pubsub plugin.
Kim Alvefur <zash@zash.se>
parents: 164
diff changeset
9 stream:hook("pubsub/event", function(event)
232
5b49de3aa0f3 plugins.pep: Set item to the first tag instead of first child.
Kim Alvefur <zash@zash.se>
parents: 216
diff changeset
10 return stream:event("pep/"..event.node, { from = event.from, item = event.item.tags[1] } );
114
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 end);
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 function stream:hook_pep(node, callback, priority)
164
d862093d9f91 plugins.pep: Only add +notify feature if there weren't any handlers for it already
Matthew Wild <mwild1@gmail.com>
parents: 114
diff changeset
14 local handlers = stream.events._handlers["pep/"..node];
d862093d9f91 plugins.pep: Only add +notify feature if there weren't any handlers for it already
Matthew Wild <mwild1@gmail.com>
parents: 114
diff changeset
15 if not(handlers) or #handlers == 0 then
d862093d9f91 plugins.pep: Only add +notify feature if there weren't any handlers for it already
Matthew Wild <mwild1@gmail.com>
parents: 114
diff changeset
16 stream:add_disco_feature(node.."+notify");
d862093d9f91 plugins.pep: Only add +notify feature if there weren't any handlers for it already
Matthew Wild <mwild1@gmail.com>
parents: 114
diff changeset
17 end
114
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 stream:hook("pep/"..node, callback, priority);
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 end
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 function stream:unhook_pep(node, callback)
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 stream:unhook("pep/"..node, callback);
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 local handlers = stream.events._handlers["pep/"..node];
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if not(handlers) or #handlers == 0 then
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 stream:remove_disco_feature(node.."+notify");
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 end
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 function stream:publish_pep(item, node)
249
00891a675634 plugins.pep: Use the new PubSub api.
Kim Alvefur <zash@zash.se>
parents: 232
diff changeset
30 return stream.pubsub:service(nil):node(node or item.attr.xmlns):publish(nil, nil, item)
114
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 end
37f5966cff15 verse.plugins.pep: New plugin to add an API for sending and catching PEP events
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 end

mercurial