Changeset

9045:4336a2b97aba

mod_pubsub: Make generation of notification body into an event to allow extensibility
author Kim Alvefur <zash@zash.se>
date Sat, 14 Jul 2018 21:34:22 +0200
parents 9044:18cd5102253c
children 9046:7cdc718312c8
files plugins/mod_pubsub/mod_pubsub.lua
diffstat 1 files changed, 17 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_pubsub/mod_pubsub.lua	Sat Jul 14 21:26:59 2018 +0200
+++ b/plugins/mod_pubsub/mod_pubsub.lua	Sat Jul 14 21:34:22 2018 +0200
@@ -55,17 +55,9 @@
 	-- Compose a sensible textual representation of at least Atom payloads
 	if item and item.tags[1] then
 		local payload = item.tags[1];
-		if payload.attr.xmlns == "http://www.w3.org/2005/Atom" then
-			local title = payload:get_child_text("title");
-			summary = payload:get_child_text("summary");
-			if not summary and title then
-				local author = payload:find("author/name#");
-				summary = title;
-				if author then
-					summary = author .. " posted " .. summary;
-				end
-			end
-		end
+		summary = module:fire_event("pubsub-summary/"..payload.attr.xmlns, {
+			kind = kind, node = node, jids = jids, actor = actor, item = item, payload = payload,
+		});
 	end
 
 	for jid, options in pairs(jids) do
@@ -82,6 +74,20 @@
 	return st.is_stanza(item) and item.attr.xmlns == xmlns_pubsub and item.name == "item";
 end
 
+module:hook("pubsub-summary/http://www.w3.org/2005/Atom", function (event)
+	local payload = event.item;
+	local title = payload:get_child_text("title");
+	local summary = payload:get_child_text("summary");
+	if not summary and title then
+		local author = payload:find("author/name#");
+		summary = title;
+		if author then
+			summary = author .. " posted " .. summary;
+		end
+	end
+	return summary;
+end);
+
 module:hook("iq/host/"..xmlns_pubsub..":pubsub", handle_pubsub_iq);
 module:hook("iq/host/"..xmlns_pubsub_owner..":pubsub", handle_pubsub_iq);