plugins/pep.lua

changeset 380
0891b4e27766
parent 268
06e6c6de6438
child 415
37674f8ce263
equal deleted inserted replaced
379:d80d27234e38 380:0891b4e27766
5 5
6 function verse.plugins.pep(stream) 6 function verse.plugins.pep(stream)
7 stream:add_plugin("disco"); 7 stream:add_plugin("disco");
8 stream:add_plugin("pubsub"); 8 stream:add_plugin("pubsub");
9 stream.pep = {}; 9 stream.pep = {};
10 10
11 stream:hook("pubsub/event", function(event) 11 stream:hook("pubsub/event", function(event)
12 return stream:event("pep/"..event.node, { from = event.from, item = event.item.tags[1] } ); 12 return stream:event("pep/"..event.node, { from = event.from, item = event.item.tags[1] } );
13 end); 13 end);
14 14
15 function stream:hook_pep(node, callback, priority) 15 function stream:hook_pep(node, callback, priority)
16 local handlers = stream.events._handlers["pep/"..node]; 16 local handlers = stream.events._handlers["pep/"..node];
17 if not(handlers) or #handlers == 0 then 17 if not(handlers) or #handlers == 0 then
18 stream:add_disco_feature(node.."+notify"); 18 stream:add_disco_feature(node.."+notify");
19 end 19 end
20 stream:hook("pep/"..node, callback, priority); 20 stream:hook("pep/"..node, callback, priority);
21 end 21 end
22 22
23 function stream:unhook_pep(node, callback) 23 function stream:unhook_pep(node, callback)
24 stream:unhook("pep/"..node, callback); 24 stream:unhook("pep/"..node, callback);
25 local handlers = stream.events._handlers["pep/"..node]; 25 local handlers = stream.events._handlers["pep/"..node];
26 if not(handlers) or #handlers == 0 then 26 if not(handlers) or #handlers == 0 then
27 stream:remove_disco_feature(node.."+notify"); 27 stream:remove_disco_feature(node.."+notify");
28 end 28 end
29 end 29 end
30 30
31 function stream:publish_pep(item, node) 31 function stream:publish_pep(item, node)
32 return stream.pubsub:service(nil):node(node or item.attr.xmlns):publish(nil, nil, item) 32 return stream.pubsub:service(nil):node(node or item.attr.xmlns):publish(nil, nil, item)
33 end 33 end
34 end 34 end

mercurial