mod_presence: Bounce errors for invalid presence types (thanks nolan/Astro)
[prosody.git] / util / stanza.lua
index 16d558af04851a8c1a16a826d7a0f43c206a64f2..7d1f569307a30feeff94dd44fe42fbc7766c6ff8 100644 (file)
@@ -44,11 +44,13 @@ module "stanza"
 
 stanza_mt = { __type = "stanza" };
 stanza_mt.__index = stanza_mt;
+local stanza_mt = stanza_mt;
 
 function stanza(name, attr)
        local stanza = { name = name, attr = attr or {}, tags = {} };
        return setmetatable(stanza, stanza_mt);
 end
+local stanza = stanza;
 
 function stanza_mt:query(xmlns)
        return self:tag("query", { xmlns = xmlns });
@@ -108,6 +110,14 @@ function stanza_mt:get_child(name, xmlns)
        end
 end
 
+function stanza_mt:get_child_text(name, xmlns)
+       local tag = self:get_child(name, xmlns);
+       if tag then
+               return tag:get_text();
+       end
+       return nil;
+end
+
 function stanza_mt:child_with_name(name)
        for _, child in ipairs(self.tags) do
                if child.name == name then return child; end
@@ -242,7 +252,7 @@ function stanza_mt.get_error(stanza)
        end
        type = error_tag.attr.type;
        
-       for child in error_tag:children() do
+       for child in error_tag:childtags() do
                if child.attr.xmlns == xmlns_stanzas then
                        if not text and child.name == "text" then
                                text = child:get_text();