Changeset

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
parents 79:da06d4996992
children 81:0924a3d05e40
files plugins/blocking.lua squishy
diffstat 2 files changed, 45 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/blocking.lua	Mon Jun 14 14:12:44 2010 +0100
@@ -0,0 +1,44 @@
+local xmlns_blocking = "urn:xmpp:blocking";
+
+function verse.plugins.blocking(stream)
+	-- FIXME: Disco
+	stream.blocking = {};
+	function stream.blocking:block_jid(jid, callback)
+		stream:send_iq(verse.iq{type="set"}
+			:tag("block", { xmlns = xmlns_blocking })
+				:tag("item", { jid = jid })
+			, function () return callback and callback(true); end
+			, function () return callback and callback(false); end
+		);
+	end
+	function stream.blocking:unblock_jid(jid, callback)
+		stream:send_iq(verse.iq{type="set"}
+			:tag("unblock", { xmlns = xmlns_blocking })
+				:tag("item", { jid = jid })
+			, function () return callback and callback(true); end
+			, function () return callback and callback(false); end
+		);
+	end
+	function stream.blocking:unblock_all_jids(callback)
+		stream:send_iq(verse.iq{type="set"}
+			:tag("unblock", { xmlns = xmlns_blocking })
+			, function () return callback and callback(true); end
+			, function () return callback and callback(false); end
+		);
+	end
+	function stream.blocking:get_blocked_jids(callback)
+		stream:send_iq(verse.iq{type="get"}
+			:tag("blocklist", { xmlns = xmlns_blocking })
+			, function (result)
+				local list = result:get_child("blocklist", xmlns_blocking);
+				if not list then return callback and callback(false); end
+				local jids = {};
+				for item in list:childtags() do
+					jids[#jids+1] = item.attr.jid;
+				end
+				return callback and callback(jids);
+			  end
+			, function (result) return callback and callback(false); end
+		);
+	end
+end
--- a/squishy	Fri Jun 04 10:36:34 2010 +0100
+++ b/squishy	Mon Jun 14 14:12:44 2010 +0100
@@ -26,6 +26,7 @@
 Module "verse.plugins.ping"	   "plugins/ping.lua"
 Module "verse.plugins.session"     "plugins/session.lua"
 Module "verse.plugins.compression" "plugins/compression.lua"
+Module "verse.plugins.blocking"    "plugins/blocking.lua"
 
 Module "verse.client" "client.lua"