Software /
code /
prosody-modules
Comparison
mod_rest/jsonmap.lib.lua @ 4927:77b7e1322281
mod_rest: Add some notes about custom disco#info mapping code
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 17 Apr 2022 12:51:45 +0200 |
parent | 4916:3dc8e329d233 |
child | 4935:a85efae90e21 |
comparison
equal
deleted
inserted
replaced
4926:b8366e31c829 | 4927:77b7e1322281 |
---|---|
48 st2json = function (s) --> array of features | 48 st2json = function (s) --> array of features |
49 if s.tags[1] == nil then | 49 if s.tags[1] == nil then |
50 return s.attr.node or true; | 50 return s.attr.node or true; |
51 end | 51 end |
52 local identities, features, extensions = array(), array(), {}; | 52 local identities, features, extensions = array(), array(), {}; |
53 | |
54 -- features and identities could be done with util.datamapper | |
53 for tag in s:childtags() do | 55 for tag in s:childtags() do |
54 if tag.name == "identity" and tag.attr.category and tag.attr.type then | 56 if tag.name == "identity" and tag.attr.category and tag.attr.type then |
55 identities:push({ category = tag.attr.category, type = tag.attr.type, name = tag.attr.name }); | 57 identities:push({ category = tag.attr.category, type = tag.attr.type, name = tag.attr.name }); |
56 elseif tag.name == "feature" and tag.attr.var then | 58 elseif tag.name == "feature" and tag.attr.var then |
57 features:push(tag.attr.var); | 59 features:push(tag.attr.var); |
58 end | 60 end |
59 end | 61 end |
62 | |
63 -- Especially this would be hard to do with util.datamapper | |
60 for form in s:childtags("x", "jabber:x:data") do | 64 for form in s:childtags("x", "jabber:x:data") do |
61 local jform = field_mappings.formdata.st2json(form); | 65 local jform = field_mappings.formdata.st2json(form); |
62 local form_type = jform["FORM_TYPE"]; | 66 local form_type = jform["FORM_TYPE"]; |
63 if jform then | 67 if jform then |
64 jform["FORM_TYPE"] = nil; | 68 jform["FORM_TYPE"] = nil; |
65 extensions[form_type] = jform; | 69 extensions[form_type] = jform; |
66 end | 70 end |
67 end | 71 end |
72 | |
68 if next(extensions) == nil then extensions = nil; end | 73 if next(extensions) == nil then extensions = nil; end |
69 return { node = s.attr.node, identities = identities, features = features, extensions = extensions }; | 74 return { node = s.attr.node, identities = identities, features = features, extensions = extensions }; |
70 end; | 75 end; |
71 json2st = function (s) | 76 json2st = function (s) |
72 if type(s) == "table" and s ~= json.null then | 77 if type(s) == "table" and s ~= json.null then |