util.stanza: Add stanza:get_error() to return type, condition and text of a stanza...
authorMatthew Wild <mwild1@gmail.com>
Fri, 29 Jan 2010 14:22:03 +0000 (14:22 +0000)
committerMatthew Wild <mwild1@gmail.com>
Fri, 29 Jan 2010 14:22:03 +0000 (14:22 +0000)
util/stanza.lua

index c817f93b96c7db994d71934d742a02f4b143282d..d223d53f7f6de032779093a78c66c0eac2e41df1 100644 (file)
@@ -38,6 +38,8 @@ if do_pretty_printing then
        end
 end
 
+local xmlns_stanzas = "urn:ietf:params:xml:ns:xmpp-stanzas";
+
 module "stanza"
 
 stanza_mt = { __type = "stanza" };
@@ -189,6 +191,30 @@ function stanza_mt.get_text(t)
        end
 end
 
+function stanza_mt.get_error(stanza)
+       local type, condition, text;
+       
+       local error_tag = stanza:get_child("error");
+       if not error_tag then
+               return nil, nil, nil;
+       end
+       type = error_tag.attr.type;
+       
+       for child in error_tag:children() do
+               if child.attr.xmlns == xmlns_stanzas then
+                       if not text and child.name == "text" then
+                               text = child:get_text();
+                       elseif not condition then
+                               condition = child.name;
+                       end
+                       if condition and text then
+                               break;
+                       end
+               end
+       end
+       return type, condition or "undefined-condition", text or "";
+end
+
 function stanza_mt.__add(s1, s2)
        return s1:add_direct_child(s2);
 end