Mercurial > prosody-modules
annotate mod_pep_atom_categories/mod_pep_atom_categories.lua @ 4973:39211f23f9f3
mod_http_muc_log: Improve accessibility with descriptive @title attrs
Especially relevant here where the link text is just an icon
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 06 Jul 2022 18:28:43 +0200 |
parents | 5fc306239db3 |
children |
rev | line source |
---|---|
4836
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); |