annotate mod_pubsub_stats/mod_pubsub_stats.lua @ 3157:8a870e0319db

mod_pubsub_stats: Remove unused import of util.datetime An earlier version may have used a timestamp as item id
author Kim Alvefur <zash@zash.se>
date Thu, 28 Jun 2018 17:44:21 +0200
parents 380f92276e57
children 330e8c81f6af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3067
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local st = require "util.stanza";
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local pubsub = module:depends"pubsub";
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local actor = module.host .. "/modules/" .. module.name;
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6
3068
380f92276e57 mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents: 3067
diff changeset
7 local node = module:get_option_string(module.name .. "_node", "stats");
380f92276e57 mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents: 3067
diff changeset
8
3067
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 local function publish_stats(stats, stats_extra)
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local id = "current";
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local xitem = st.stanza("item", { id = id })
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 :tag("query", { xmlns = "http://jabber.org/protocol/stats" });
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 for name, value in pairs(stats) do
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 local stat_extra = stats_extra[name];
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 local unit = stat_extra and stat_extra.units;
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 xitem:tag("stat", { name = name, unit = unit, value = tostring(value) }):up();
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 end
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19
3068
380f92276e57 mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents: 3067
diff changeset
20 local ok, err = pubsub.service:publish(node, actor, id, xitem);
3067
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 if not ok then
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 module:log("error", "Error publishing stats: %s", err);
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 end
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 end
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 function module.load()
3068
380f92276e57 mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents: 3067
diff changeset
27 pubsub.service:create(node, true);
380f92276e57 mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents: 3067
diff changeset
28 pubsub.service:set_affiliation(node, true, actor, "publisher");
3067
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 end
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 module:hook_global("stats-updated", function (event)
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 publish_stats(event.stats, event.stats_extra);
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 end);
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 function module.unload()
3068
380f92276e57 mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents: 3067
diff changeset
36 pubsub.service:delete(node, true);
3067
b01ef74c9fc0 mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 end