Annotate

mod_stats39/mod_stats39.lua @ 3846:3941768916f1

mod_stats39: Format numbers with a bit more precision
author Kim Alvefur <zash@zash.se>
date Sun, 19 Jan 2020 19:27:46 +0100
parent 3840:054898e84a04
child 3847:ffc64d285a96
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3839
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";
3846
3941768916f1 mod_stats39: Format numbers with a bit more precision
Kim Alvefur <zash@zash.se>
parents: 3840
diff changeset
3 local s_format = string.format;
3839
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 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
6 local origin, stanza = event.origin, event.stanza;
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local stats, _, extra = statsman.get_stats();
3840
054898e84a04 mod_stats39: Use a more local reference (silence luacheck warning)
Kim Alvefur <zash@zash.se>
parents: 3839
diff changeset
8 local reply = st.reply(stanza);
3839
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 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
10 for stat, value in pairs(stats) do
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local unit = extra[stat] and extra[stat].units;
3846
3941768916f1 mod_stats39: Format numbers with a bit more precision
Kim Alvefur <zash@zash.se>
parents: 3840
diff changeset
12 reply:tag("stat", { name = stat, unit = unit, value = s_format("%.12g", value) }):up();
3839
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 end
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 origin.send(reply);
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 return true;
a4b05f34a790 mod_stats39: Provides statsmanager stats via XEP-0039
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 end)