view mod_measure_client_presence/mod_measure_client_presence.lua @ 5553:67152838afbc

mod_http_oauth2: Improve error messages for URI properties Since there are separate validation checks for URI properties, including that they should use https, with better and more specific error reporting. Reverts 'luaPattern' to 'pattern' which is not currently supported by util.jsonschema, but allows anything that retrieves the schema over http to validate against it, should they wish to do so.
author Kim Alvefur <zash@zash.se>
date Sat, 17 Jun 2023 18:15:00 +0200
parents 37ae0801f925
children
line wrap: on
line source

module:set_global();

local measure = require"core.statsmanager".measure;

local valid_shows = {
	available = true,
	chat = true,
	away = true,
	dnd = true,
	xa = true,
	unavailable = true,
}

local counters = {
	available = measure("amount", "client_presence.available"),
	chat = measure("amount", "client_presence.chat"),
	away = measure("amount", "client_presence.away"),
	dnd = measure("amount", "client_presence.dnd"),
	xa = measure("amount", "client_presence.xa"),
	unavailable = measure("amount", "client_presence.unavailable"),
	invalid = measure("amount", "client_presence.invalid");
};

module:hook("stats-update", function ()
	local buckets = {
		available = 0,
		chat = 0,
		away = 0,
		dnd = 0,
		xa = 0,
		unavailable = 0,
		invalid = 0,
	};
	for _, session in pairs(full_sessions) do
		local status = "unavailable";
		if session.presence then
			status = session.presence:get_child_text("show") or "available";
		end
		if valid_shows[status] ~= nil then
			buckets[status] = buckets[status] + 1;
		else
			buckets.invalid = buckets.invalid + 1;
		end
	end
	for bucket, count in pairs(buckets) do
		counters[bucket](count)
	end
end)