Changeset

155:9c9af7a196ed

plugins.private, squishy: Allow setting the storage node, and not just child(s). And add to squishy.
author Kim Alvefur <zash@zash.se>
date Sat, 20 Nov 2010 17:27:03 +0100
parents 153:f7c705485a2a
children 156:ab0f0326b2b4
files plugins/private.lua squishy
diffstat 2 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/private.lua	Thu Nov 11 03:13:51 2010 +0000
+++ b/plugins/private.lua	Sat Nov 20 17:27:03 2010 +0100
@@ -1,12 +1,20 @@
+-- Implements XEP-0049: Private XML Storage
+
 local xmlns_private = "jabber:iq:private";
 
 function verse.plugins.private(stream)
 	function stream:private_set(name, xmlns, data, callback)
 		local iq = verse.iq({ type = "set" })
-			:tag("query", { xmlns = xmlns_private })
-				:tag(name, { xmlns = xmlns });
-		if data then iq:add_child(data); end
-		self:send_iq(iq, function () callback(); end);
+			:tag("query", { xmlns = xmlns_private });
+		if data then
+			if data.name == name and data.attr and data.attr.xmlns == xmlns then
+				iq:add_child(data);
+			else
+				iq:tag(name, { xmlns = xmlns })
+					:add_child(data);
+			end
+		end
+		self:send_iq(iq, callback);
 	end
 	
 	function stream:private_get(name, xmlns, callback)
--- a/squishy	Thu Nov 11 03:13:51 2010 +0000
+++ b/squishy	Sat Nov 20 17:27:03 2010 +0100
@@ -40,6 +40,7 @@
 Module "verse.plugins.disco"       "plugins/disco.lua"
 Module "verse.plugins.pep"         "plugins/pep.lua"
 Module "verse.plugins.adhoc"       "plugins/adhoc.lua"
+Module "verse.plugins.private"     "plugins/private.lua"
 
 if GetOption "bosh" ~= false then
 	Module "net.httpclient_listener" "net/httpclient_listener.lua"