author | Kim Alvefur <zash@zash.se> |
Sun, 03 Dec 2023 23:44:18 +0100 | |
changeset 5770 | b8a2b3ebe792 |
parent 4599 | bac3dae031ee |
permissions | -rw-r--r-- |
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) |