Mercurial > prosody-modules
comparison mod_rest/jsonmap.lib.lua @ 3923:3c3d216c6f6d
mod_rest: Add JSON mapping of XEP-0039: Statistics Gathering
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 28 Feb 2020 22:38:41 +0100 |
parents | ea59c9455f93 |
children | 8b34222216f4 |
comparison
equal
deleted
inserted
replaced
3922:ea59c9455f93 | 3923:3c3d216c6f6d |
---|---|
342 end | 342 end |
343 end | 343 end |
344 return form; | 344 return form; |
345 end | 345 end |
346 }; | 346 }; |
347 | |
348 -- XEP-0039: Statistics Gathering | |
349 stats = { type = "func", xmlns = "http://jabber.org/protocol/stats", tagname = "query", | |
350 st2json = function (s) | |
351 local o = array(); | |
352 for stat in s:childtags("stat") do | |
353 o:push({ | |
354 name = stat.attr.name; | |
355 unit = stat.attr.unit; | |
356 value = stat.attr.value; | |
357 }); | |
358 end | |
359 return o; | |
360 end; | |
361 json2st = function (j) | |
362 local stats = st.stanza("query", { xmlns = "http://jabber.org/protocol/stats" }); | |
363 if type(j) == "table" then | |
364 for _, stat in ipairs(j) do | |
365 stats:tag("stat", { name = stat.name, unit = stat.unit, value = stat.value }):up(); | |
366 end | |
367 end | |
368 return stats; | |
369 end; | |
370 }; | |
371 | |
347 }; | 372 }; |
348 | 373 |
349 local implied_kinds = { | 374 local implied_kinds = { |
350 disco = "iq", | 375 disco = "iq", |
351 items = "iq", | 376 items = "iq", |