Software /
code /
prosody
Diff
util/stanza.lua @ 2526:401ff68413a1
util.stanza: Add stanza:get_error() to return type, condition and text of a stanza error
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 29 Jan 2010 14:22:03 +0000 |
parent | 2482:a1570e371258 |
child | 2557:e5254ccd5ef8 |
line wrap: on
line diff
--- a/util/stanza.lua Fri Jan 29 18:16:39 2010 +0500 +++ b/util/stanza.lua Fri Jan 29 14:22:03 2010 +0000 @@ -38,6 +38,8 @@ end end +local xmlns_stanzas = "urn:ietf:params:xml:ns:xmpp-stanzas"; + module "stanza" stanza_mt = { __type = "stanza" }; @@ -189,6 +191,30 @@ 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