Mercurial > prosody-modules
comparison mod_rest/jsonmap.lib.lua @ 3880:44c2d36c40a4
mod_rest: Add JSON to XML mapping of dataforms
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 04 Feb 2020 22:34:19 +0100 |
parents | 9a3dfe0bf9fd |
children | 5d7df207dc2b |
comparison
equal
deleted
inserted
replaced
3879:3b31ff7b4c7c | 3880:44c2d36c40a4 |
---|---|
45 fields:push(i); | 45 fields:push(i); |
46 end | 46 end |
47 return form; | 47 return form; |
48 end; | 48 end; |
49 function (x) | 49 function (x) |
50 -- TODO | 50 if type(x) == "table" and x ~= json.null then |
51 local form = st.stanza("x", { xmlns = "jabber:x:data", type = x.type }); | |
52 if x.title then | |
53 form:text_tag("title", x.title); | |
54 end | |
55 if x.instructions then | |
56 form:text_tag("instructions", x.instructions); | |
57 end | |
58 if type(x.fields) == "table" then | |
59 for _, f in ipairs(x.fields) do | |
60 if type(f) == "table" then | |
61 form:tag("field", { var = f.var, type = f.type, label = f.label }); | |
62 if f.desc then | |
63 form:text_tag("desc", f.desc); | |
64 end | |
65 if f.required == true then | |
66 form:tag("required"):up(); | |
67 end | |
68 if type(f.value) == "string" then | |
69 form:text_tag("value", f.value); | |
70 elseif type(f.value) == "table" then | |
71 for _, v in ipairs(f.value) do | |
72 form:text_tag("value", v); | |
73 end | |
74 end | |
75 if type(f.options) == "table" then | |
76 for _, o in ipairs(f.value) do | |
77 if type(o) == "table" then | |
78 form:tag("option", { label = o.label }); | |
79 form:text_tag("value", o.value); | |
80 form:up(); | |
81 end | |
82 end | |
83 end | |
84 end | |
85 end | |
86 end | |
87 return form; | |
88 end | |
51 end; | 89 end; |
52 }; | 90 }; |
53 | 91 |
54 local simple_types = { | 92 local simple_types = { |
55 -- basic message | 93 -- basic message |