Diff

libs/xstanza.lua @ 6:f8e0ab90d84e

util.xstanza: New library to extend util.stanza with XMPP-specific helpers
author Matthew Wild <mwild1@gmail.com>
date Sat, 28 Nov 2009 22:25:04 +0000
child 15:be4154ed4e3a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libs/xstanza.lua	Sat Nov 28 22:25:04 2009 +0000
@@ -0,0 +1,25 @@
+local stanza_mt = getmetatable(require "util.stanza".stanza());
+
+function stanza_mt:error_from_stanza()
+	local type, condition, text;
+	
+	local error_tag = self:get_child("error", "urn:ietf:params:xml:ns:xmpp-stanzas");
+	if not error_tag then
+		return nil, nil;
+	end
+	type = error.attr.type;
+	
+	for child in error_tag:children() do
+		if child.attr.xmlns == xmlns_stanzas then
+			if child.name == "text" then
+				text = child:get_text();
+			else
+				condition = child.name;
+			end
+			if condition and text then
+				break;
+			end
+		end
+	end
+	return type, condition, text;
+end