mod_stats39/mod_stats39.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:26:26 +0100
changeset 5063 5f1120c284c5
parent 4599 bac3dae031ee
permissions -rw-r--r--
mod_cloud_notify_extensions: Add note about dependency Noting here because people might not click through to see it on the mod_cloud_notify_encrypted page.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3843
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local statsman = require "core.statsmanager";
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
local st = require "util.stanza";
3850
3941768916f1 mod_stats39: Format numbers with a bit more precision
Kim Alvefur <zash@zash.se>
parents: 3844
diff changeset
     3
local s_format = string.format;
3843
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
4599
bac3dae031ee Add note of incompatibility with trunk since 5f15ab7c6ae5
Kim Alvefur <zash@zash.se>
parents: 3851
diff changeset
     5
assert(statsman.get_stats, "not compatible with trunk based on openmetrics");
bac3dae031ee Add note of incompatibility with trunk since 5f15ab7c6ae5
Kim Alvefur <zash@zash.se>
parents: 3851
diff changeset
     6
3851
ffc64d285a96 mod_stats39: Advertise namespace as feature (not part of the XEP?)
Kim Alvefur <zash@zash.se>
parents: 3850
diff changeset
     7
module:add_feature("http://jabber.org/protocol/stats");
ffc64d285a96 mod_stats39: Advertise namespace as feature (not part of the XEP?)
Kim Alvefur <zash@zash.se>
parents: 3850
diff changeset
     8
3843
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
module:hook("iq/host/http://jabber.org/protocol/stats:query", function (event)
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
	local origin, stanza = event.origin, event.stanza;
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
	local stats, _, extra = statsman.get_stats();
3844
054898e84a04 mod_stats39: Use a more local reference (silence luacheck warning)
Kim Alvefur <zash@zash.se>
parents: 3843
diff changeset
    12
	local reply = st.reply(stanza);
3843
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
	reply:tag("query", { xmlns = "http://jabber.org/protocol/stats" });
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
	for stat, value in pairs(stats) do
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
		local unit = extra[stat] and extra[stat].units;
3850
3941768916f1 mod_stats39: Format numbers with a bit more precision
Kim Alvefur <zash@zash.se>
parents: 3844
diff changeset
    16
		reply:tag("stat", { name = stat, unit = unit, value = s_format("%.12g", value) }):up();
3843
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
	end
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
	origin.send(reply);
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
	return true;
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
end)