mod_pep_atom_categories/mod_pep_atom_categories.lua
author Ben Smith <bens@effortlessis.com>
Tue, 14 May 2024 07:31:34 -0700
changeset 5912 dcea4b4c415d
parent 4840 5fc306239db3
permissions -rw-r--r--
Tweaking documentation to clarify that Oauth2 can be used for VirtualHosts and Component installations.
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);