Mercurial > prosody-modules
annotate mod_pubsub_stats/mod_pubsub_stats.lua @ 3082:1cff081abbed
mod_http_avatar: Add a module to serve vCard-temp avatars over HTTP.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Fri, 01 Jun 2018 22:05:46 +0200 |
parents | 380f92276e57 |
children | 8a870e0319db |
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 local dt = require "util.datetime"; |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 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
|
5 |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 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
|
7 |
3068
380f92276e57
mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents:
3067
diff
changeset
|
8 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
|
9 |
3067
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 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
|
11 local id = "current"; |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 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
|
13 :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
|
14 |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 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
|
16 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
|
17 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
|
18 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
|
19 end |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 |
3068
380f92276e57
mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents:
3067
diff
changeset
|
21 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
|
22 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
|
23 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
|
24 end |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 function module.load() |
3068
380f92276e57
mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents:
3067
diff
changeset
|
28 pubsub.service:create(node, true); |
380f92276e57
mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents:
3067
diff
changeset
|
29 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
|
30 end |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 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
|
33 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
|
34 end); |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 |
b01ef74c9fc0
mod_pubsub_stats: Simple module that publishes stats in XEP-0039 format
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 function module.unload() |
3068
380f92276e57
mod_pubsub_stats: Make the node used configurable
Kim Alvefur <zash@zash.se>
parents:
3067
diff
changeset
|
37 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
|
38 end |