Comparison

plugins/blocking.lua @ 80:336864e83991

verse.plugins.blocking, squishy: New plugin for XEP-0191: Simple Communications Blocking
author Matthew Wild <mwild1@gmail.com>
date Mon, 14 Jun 2010 14:12:44 +0100
child 250:a5ac643a7fd6
comparison
equal deleted inserted replaced
79:da06d4996992 80:336864e83991
1 local xmlns_blocking = "urn:xmpp:blocking";
2
3 function verse.plugins.blocking(stream)
4 -- FIXME: Disco
5 stream.blocking = {};
6 function stream.blocking:block_jid(jid, callback)
7 stream:send_iq(verse.iq{type="set"}
8 :tag("block", { xmlns = xmlns_blocking })
9 :tag("item", { jid = jid })
10 , function () return callback and callback(true); end
11 , function () return callback and callback(false); end
12 );
13 end
14 function stream.blocking:unblock_jid(jid, callback)
15 stream:send_iq(verse.iq{type="set"}
16 :tag("unblock", { xmlns = xmlns_blocking })
17 :tag("item", { jid = jid })
18 , function () return callback and callback(true); end
19 , function () return callback and callback(false); end
20 );
21 end
22 function stream.blocking:unblock_all_jids(callback)
23 stream:send_iq(verse.iq{type="set"}
24 :tag("unblock", { xmlns = xmlns_blocking })
25 , function () return callback and callback(true); end
26 , function () return callback and callback(false); end
27 );
28 end
29 function stream.blocking:get_blocked_jids(callback)
30 stream:send_iq(verse.iq{type="get"}
31 :tag("blocklist", { xmlns = xmlns_blocking })
32 , function (result)
33 local list = result:get_child("blocklist", xmlns_blocking);
34 if not list then return callback and callback(false); end
35 local jids = {};
36 for item in list:childtags() do
37 jids[#jids+1] = item.attr.jid;
38 end
39 return callback and callback(jids);
40 end
41 , function (result) return callback and callback(false); end
42 );
43 end
44 end