From b59c5e0f68407f7be7c1e1a78ceb7ccb11071844 Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Fri, 6 Jul 2018 18:03:32 +0200
Subject: mod_pubsub: Advertise title and description in disco#info

---
 plugins/mod_pubsub/pubsub.lib.lua | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/plugins/mod_pubsub/pubsub.lib.lua b/plugins/mod_pubsub/pubsub.lib.lua
index 83fba1fc..82c44a16 100644
--- a/plugins/mod_pubsub/pubsub.lib.lua
+++ b/plugins/mod_pubsub/pubsub.lib.lua
@@ -89,6 +89,22 @@ local options_form = dataform {
 	-- No options yet. File a feature request ;)
 };
 
+local node_metadata_form = dataform {
+	{
+		type = "hidden";
+		name = "FORM_TYPE";
+		value = "http://jabber.org/protocol/pubsub#meta-data";
+	};
+	{
+		type = "text-single";
+		name = "pubsub#title";
+	};
+	{
+		type = "text-single";
+		name = "pubsub#description";
+	};
+};
+
 local service_method_feature_map = {
 	add_subscription = { "subscribe" };
 	create = { "create-nodes", "instant-nodes", "item-ids", "create-and-configure" };
@@ -147,6 +163,12 @@ function _M.handle_disco_info_node(event, service)
 	end
 	event.exists = true;
 	reply:tag("identity", { category = "pubsub", type = "leaf" }):up();
+	if node_obj.config then
+		reply:add_child(node_metadata_form:form({
+			["pubsub#title"] = node_obj.config.title;
+			["pubsub#description"] = node_obj.config.description;
+		}, "result"));
+	end
 end
 
 function _M.handle_disco_items_node(event, service)
-- 
cgit v1.2.3