aboutsummaryrefslogtreecommitdiffstats
path: root/util/dataforms.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2015-09-12 17:40:14 +0200
committerKim Alvefur <zash@zash.se>2015-09-12 17:40:14 +0200
commit8e89a3e5e70b563dd02f1a7664f0580882edf15a (patch)
tree1a25c33fe0d6ed38dd12a8fefa7d143053a2d89c /util/dataforms.lua
parent9fd5e93f0c2e8c0526d718d17e2b96775436e0dd (diff)
downloadprosody-8e89a3e5e70b563dd02f1a7664f0580882edf15a.tar.gz
prosody-8e89a3e5e70b563dd02f1a7664f0580882edf15a.zip
util.dataforms: Refactor parsing to reuse simple text parser instead of duplicate code
Diffstat (limited to 'util/dataforms.lua')
-rw-r--r--util/dataforms.lua47
1 files changed, 21 insertions, 26 deletions
diff --git a/util/dataforms.lua b/util/dataforms.lua
index 244fb3f3..30b5344a 100644
--- a/util/dataforms.lua
+++ b/util/dataforms.lua
@@ -145,30 +145,28 @@ function form_t.data(layout, stanza)
return data;
end
-field_readers["text-single"] =
- function (field_tag, required)
- local data = field_tag:get_child_text("value");
- if data and #data > 0 then
- return data
- elseif required then
- return nil, "Required value missing";
- end
+local function simple_text(field_tag, required)
+ local data = field_tag:get_child_text("value");
+ if data and #data > 0 then
+ return data
+ elseif required then
+ return nil, "Required value missing";
end
+end
-field_readers["text-private"] =
- field_readers["text-single"];
+field_readers["text-single"] = simple_text;
+
+field_readers["text-private"] = simple_text;
field_readers["jid-single"] =
function (field_tag, required)
- local raw_data = field_tag:get_child_text("value")
+ local raw_data, err = simple_text(field_tag, required);
+ if not raw_data then return raw_data, err; end
local data = jid_prep(raw_data);
- if data and #data > 0 then
- return data
- elseif raw_data then
+ if not data then
return nil, "Invalid JID: " .. raw_data;
- elseif required then
- return nil, "Required value missing";
end
+ return data;
end
field_readers["jid-multi"] =
@@ -212,8 +210,7 @@ field_readers["text-multi"] =
return data, err;
end
-field_readers["list-single"] =
- field_readers["text-single"];
+field_readers["list-single"] = simple_text;
local boolean_values = {
["1"] = true, ["true"] = true,
@@ -222,15 +219,13 @@ local boolean_values = {
field_readers["boolean"] =
function (field_tag, required)
- local raw_value = field_tag:get_child_text("value");
- local value = boolean_values[raw_value ~= nil and raw_value];
- if value ~= nil then
- return value;
- elseif raw_value then
- return nil, "Invalid boolean representation";
- elseif required then
- return nil, "Required value missing";
+ local raw_value, err = simple_text(field_tag, required);
+ if not raw_value then return raw_value, err; end
+ local value = boolean_values[raw_value];
+ if value == nil then
+ return nil, "Invalid boolean representation:" .. raw_value;
end
+ return value;
end
field_readers["hidden"] =