mod_pep_atom_categories/mod_pep_atom_categories.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:26:26 +0100
changeset 5063 5f1120c284c5
parent 4840 5fc306239db3
permissions -rw-r--r--
mod_cloud_notify_extensions: Add note about dependency Noting here because people might not click through to see it on the mod_cloud_notify_encrypted page.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4840
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     1
module:depends("pep");
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     2
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     3
local st = require"util.stanza";
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     4
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     5
local options = {
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     6
	access_model = "open",
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     7
	max_items = "max",
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     8
};
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
     9
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    10
module:handle_items("pep-service", function (event)
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    11
        local service = event.item.service;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    12
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    13
        module:hook_object_event(service.events, "item-published", function(event)
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    14
		local service = event.service;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    15
		local node = event.node;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    16
		local actor = event.actor;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    17
		local id = event.id;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    18
		local item = event.item;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    19
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    20
		local entry = item:get_child("entry", "http://www.w3.org/2005/Atom");
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    21
		if entry == nil then
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    22
			return;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    23
		end
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    24
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    25
		for category in entry:childtags("category") do
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    26
			local term = category.attr.term;
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    27
			local payload = st.stanza("item", {xmlns = "http://jabber.org/protocol/pubsub"})
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    28
				:tag("item", {xmlns = "xmpp:linkmauve.fr/x-categories", jid = service.jid, node = node, id = id});
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    29
			service:publish("category-"..term, actor, nil, payload, options);
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    30
		end
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    31
	end);
5fc306239db3 mod_pep_atom_categories: Add a module to index categories in Atom entries
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff changeset
    32
end);