Diff

plugins/mod_external_services.lua @ 11755:ae565e49289a

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.
author Kim Alvefur <zash@zash.se>
date Mon, 30 Aug 2021 00:11:58 +0200
parent 11754:21a9b3f2a728
child 11756:a0e17b7c8b05
line wrap: on
line diff
--- a/plugins/mod_external_services.lua	Mon Aug 30 20:19:09 2021 +0200
+++ b/plugins/mod_external_services.lua	Mon Aug 30 00:11:58 2021 +0200
@@ -122,6 +122,15 @@
 	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 @@
 	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 @@
 		end);
 	end
 
-	setmetatable(services, services_mt);
-
 	module:fire_event("external_service/services", {
 			origin = origin;
 			stanza = stanza;
@@ -181,8 +187,7 @@
 	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 @@
 			tonumber(service.attr.port) or 0));
 	end
 
-	setmetatable(services, services_mt);
-
 	module:fire_event("external_service/credentials", {
 			origin = origin;
 			stanza = stanza;