mod_external_services: Factor out public function returning current services

This way you get the _prepared_ services and don't have to do that mapping
yourself.
This commit is contained in:
Kim Alvefur 2021-08-30 00:11:58 +02:00
parent e8b53c328e
commit 8d25086ac1

View file

@ -122,6 +122,15 @@ local services_mt = {
end;
}
function get_services()
local extras = module:get_host_items("external_service");
local services = ( configured_services + extras ) / prepare;
setmetatable(services, services_mt);
return services;
end
local function handle_services(event)
local origin, stanza = event.origin, event.stanza;
local action = stanza.tags[1];
@ -134,8 +143,7 @@ local function handle_services(event)
end
local reply = st.reply(stanza):tag("services", { xmlns = action.attr.xmlns });
local extras = module:get_host_items("external_service");
local services = ( configured_services + extras ) / prepare;
local services = get_services();
local requested_type = action.attr.type;
if requested_type then
@ -144,8 +152,6 @@ local function handle_services(event)
end);
end
setmetatable(services, services_mt);
module:fire_event("external_service/services", {
origin = origin;
stanza = stanza;
@ -181,8 +187,7 @@ local function handle_credentials(event)
end
local reply = st.reply(stanza):tag("credentials", { xmlns = action.attr.xmlns });
local extras = module:get_host_items("external_service");
local services = ( configured_services + extras ) / prepare;
local services = get_services();
services:filter(function (item)
return item.restricted;
end)
@ -198,8 +203,6 @@ local function handle_credentials(event)
tonumber(service.attr.port) or 0));
end
setmetatable(services, services_mt);
module:fire_event("external_service/credentials", {
origin = origin;
stanza = stanza;