aboutsummaryrefslogtreecommitdiffstats
path: root/util/dataforms.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2018-06-02 19:57:46 +0200
committerKim Alvefur <zash@zash.se>2018-06-02 19:57:46 +0200
commit7bc9f73c736d558386cfbce9d57a7dddd0b5479b (patch)
tree810fd6136e2a41a3b4316066eaccace728e7e185 /util/dataforms.lua
parentdd0d9009e8491223396cde8e7bccfc9aa168fa0d (diff)
downloadprosody-7bc9f73c736d558386cfbce9d57a7dddd0b5479b.tar.gz
prosody-7bc9f73c736d558386cfbce9d57a7dddd0b5479b.zip
util.dataforms: Add a simple function for identifying form types
This is meant to allow identifying forms without parsing them completely.
Diffstat (limited to 'util/dataforms.lua')
-rw-r--r--util/dataforms.lua16
1 files changed, 16 insertions, 0 deletions
diff --git a/util/dataforms.lua b/util/dataforms.lua
index 8c5b8ee2..7b832f78 100644
--- a/util/dataforms.lua
+++ b/util/dataforms.lua
@@ -249,8 +249,24 @@ field_readers["hidden"] =
return field_tag:get_child_text("value");
end
+
+local function get_form_type(form)
+ if not st.is_stanza(form) then
+ return nil, "not a stanza object";
+ elseif form.attr.xmlns ~= "jabber:x:data" or form.name ~= "x" then
+ return nil, "not a dataform element";
+ end
+ for field in form:childtags("field") do
+ if field.attr.var == "FORM_TYPE" then
+ return field:get_child_text("value");
+ end
+ end
+ return "";
+end
+
return {
new = new;
+ get_type = get_form_type;
};