changeset 4519:ea1fd703bb27

mod_rest: Convert XEP-0039 to datamapping
author Kim Alvefur <zash@zash.se>
date Mon, 22 Mar 2021 00:21:27 +0100
parents 073f5397c1d2
children bd320ec2c2fc
files mod_rest/jsonmap.lib.lua mod_rest/res/schema-xmpp.json
diffstat 2 files changed, 36 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/mod_rest/jsonmap.lib.lua	Sun Mar 21 23:54:06 2021 +0100
+++ b/mod_rest/jsonmap.lib.lua	Mon Mar 22 00:21:27 2021 +0100
@@ -353,30 +353,6 @@
 		end
 	};
 
-	-- XEP-0039: Statistics Gathering
-	stats = { type = "func", xmlns = "http://jabber.org/protocol/stats", tagname = "query",
-		st2json = function (s)
-			local o = array();
-			for stat in s:childtags("stat") do
-				o:push({
-						name = stat.attr.name;
-						unit = stat.attr.unit;
-						value = stat.attr.value;
-					});
-			end
-			return o;
-		end;
-		json2st = function (j)
-			local stats = st.stanza("query", { xmlns = "http://jabber.org/protocol/stats" });
-			if type(j) == "table" then
-				for _, stat in ipairs(j) do
-					stats:tag("stat", { name = stat.name, unit = stat.unit, value = stat.value }):up();
-				end
-			end
-			return stats;
-		end;
-	};
-
 };
 
 local byxmlname = {};
--- a/mod_rest/res/schema-xmpp.json	Sun Mar 21 23:54:06 2021 +0100
+++ b/mod_rest/res/schema-xmpp.json	Mon Mar 22 00:21:27 2021 +0100
@@ -75,6 +75,42 @@
                   "x_name_is_value" : true
                }
             },
+            "stats" : {
+               "description" : "Simple statistics gathering, array of (name, unit, value) tuples.",
+               "items" : {
+                  "properties" : {
+                     "name" : {
+                        "type" : "string",
+                        "xml" : {
+                           "attribute" : true
+                        }
+                     },
+                     "unit" : {
+                        "type" : "string",
+                        "xml" : {
+                           "attribute" : true
+                        }
+                     },
+                     "value" : {
+                        "type" : "number",
+                        "xml" : {
+                           "attribute" : true
+                        }
+                     }
+                  },
+                  "type" : "object",
+                  "xml" : {
+                     "name" : "stat"
+                  }
+               },
+               "title" : "XEP-0039: Statistics Gathering",
+               "type" : "array",
+               "xml" : {
+                  "name" : "query",
+                  "namespace" : "http://jabber.org/protocol/stats",
+                  "wrapped" : true
+               }
+            },
             "version" : {
                "description" : "Ask about software version information",
                "properties" : {