util.stanza: Add stanza:get_error() to return type, condition and text of a stanza error

vault/0.11
Matthew Wild 17 years ago
parent 0d85845a97
commit 35d65ca55b
  1. 26
      util/stanza.lua

@ -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

Loading…
Cancel
Save