Annotate

mod_pubsub_forgejo/README.md @ 6325:6ea80b73d8f2

mod_http_oauth2: Only require redirect URIs when using grant types that need it In the Device flow, no redirect URI is used because the client instead receives responses by polling. It is therefore unnecessary to enforce a requirement that these include redirect URI(s).
author Kim Alvefur <zash@zash.se>
date Thu, 03 Jul 2025 15:42:42 +0200
parent 6203:131b8bfbefb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6203
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
1 ---
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
2 labels:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
3 - "Stage-Beta"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
4 summary: "Turn forgejo/github/gitlab webhooks into atom-in-pubsub"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
5 rockspec:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
6 build:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
7 modules:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
8 mod_pubsub_forgejo.templates: templates.lib.lua
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
9 mod_pubsub_forgejo.format: format.lib.lua
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
10 ---
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
11
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
12 # Introduction
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
13
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
14 This module accepts Forgejo webhooks and publishes them to a local
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
15 pubsub component as Atom entries for XMPP clients to subscribe to.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
16 Such entries can be viewed with a pubsub-compatible XMPP client such as
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
17 [movim](https://movim.eu/) or [libervia](https://libervia.org/), or turned
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
18 into chat messages with a bot (cf last section of this document).
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
19 It is a more customisable `mod_pubsub_github`.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
20
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
21 It should also work with other forges such as github and gitlab (to be tested).
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
22
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
23 # Configuration
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
24
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
25 ## Basic setup
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
26
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
27 Load the module on a pubsub component:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
28
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
29 ```{.lua}
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
30 Component "pubsub.example.com" "pubsub"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
31 modules_enabled = { "pubsub_forgejo" }
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
32 forgejo_secret = "something-very-secret" -- copy this in the Forgejo web UI
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
33 ```
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
34
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
35 The "Target URL" to configure in the Forgejo web UI should be either:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
36
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
37 - `http://pubsub.example.com:5280/pubsub_forgejo`
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
38 - `https://pubsub.example.com:5281/pubsub_forgejo`
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
39
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
40 If your HTTP host doesn't match the pubsub component's address, you will
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
41 need to inform Prosody. For more info see Prosody's [HTTP server
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
42 documentation](https://prosody.im/doc/http#virtual_hosts).
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
43
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
44 ## Advanced setup
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
45
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
46 ### Publishing settings
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
47
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
48 #### Pubsub actor
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
49
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
50 By default, `forgejo_actor` is unset; this results in nodes being created by the prosody superuser.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
51 Change this if you set up access control and you know what you are doing.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
52
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
53 #### Pubsub node
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
54
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
55 By default, all events are published in the same pubsub node named "forgejo".
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
56 This can be changed by setting `forgejo_node` to a different value.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
57
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
58 Another option is to used different nodes based on which repository emitted the webhook.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
59 This is useful if you configured the webhook at the user (or organisation) level instead of repository-level.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
60 To set this up, define `forgejo_node_prefix` and `forgejo_node_mapping`.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
61 `forgejo_node_mapping` must be a key in the the webhook "repository" payload, e.g., "full*name". Example: with `forge_node_prefix = "forgejo---"` and `forgejo_node_mapping = "full_name"`, webhooks emitted by the repository \_repo-name* in the _org-name_ organisation will be published in the node _forgejo---org-name/repo-name_.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
62
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
63 ### Customizing the atom entry
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
64
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
65 #### Pushes with no commits
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
66
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
67 By default, pushes without commits (i.e., pushing tags) are ignored, because it leads
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
68 to weird entries like "romeo pushed 0 commit(s) to repo".
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
69 This behaviour can be changed by setting `forgejo_skip_commitless_push = false`.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
70
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
71 #### Atom entry templates
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
72
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
73 By default, 3 webhooks events are handled (push, pull_request and release),
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
74 and the payload is turned into a atom entry by
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
75 using [util.interpolation](https://prosody.im/doc/developers/util/interpolation) templates.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
76 The default templates can be viewed in the source of this module, in the `templates.lib.lua`
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
77 file.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
78
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
79 You can customise them using by setting `forgejo_templates`, which is merged with the default
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
80 templates.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
81 In this table, keys are forgejo event names (`x-forgejo-template` request header).
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
82 Values of this table are tables too, where keys are atom elements and values are the templates
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
83 passed to [util.interpolation](https://prosody.im/doc/developers/util/interpolation).
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
84
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
85 A few filters are provided:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
86
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
87 - `|shorten` strips the last 32 characters: useful to get a short commit hash
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
88 - `|firstline` only keeps the first line: useful to get a commit "title"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
89 - `|branch` strips the first 12 characters: useful to get a branch name from `data.ref`
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
90 - `|tag` strips the first 11 characters: useful to get a tag name from `data.ref`
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
91
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
92 Example:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
93
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
94 ```{.lua}
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
95 forgejo_templates = {
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
96 pull_request = nil, -- suppress handling of `pull_request` events
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
97 release = { -- data is the JSON payload of the webhook
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
98 title = "{data.sender.username} {data.action} a release for {data.repository.name}",
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
99 content = "{data.release.name}",
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
100 id = "release-{data.release.tag_name}",
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
101 link = "{data.release.html_url}"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
102 }
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
103 }
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
104 ```
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
105
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
106 Examples payloads are provided in the `webhook-examples`
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
107
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
108 # Publishing in a MUC
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
109
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
110 You can use a bot that listen to pubsub events and converts them to MUC messages.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
111 MattJ's [riddim](https://matthewwild.co.uk/projects/riddim/) is well suited for that.
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
112
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
113 Example config, single pubsub node:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
114
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
115 ```{.lua}
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
116 jid = "forgejo-bot@example.com"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
117 password = "top-secret-stuff"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
118 room = "room@rooms.example.com"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
119 autojoin = room
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
120
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
121 pubsub2room = {
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
122 "pubsub.example.com#forgejo" = {
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
123 room = room,
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
124 template = "${title}\n${content}\n${link@href}"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
125 }
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
126 }
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
127 ```
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
128
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
129 Example with several nodes:
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
130
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
131 ```{.lua}
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
132 local nodes = {"forgejo---org/repo1", "forgejo---org/repo2"}
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
133 pubsub2room = {}
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
134
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
135 for _, node in ipairs(slidge_repos) do
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
136 pubsub2room = ["pubsub.example.com#" .. node] = {
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
137 room = room,
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
138 template = "${title}\n${content}\n${link@href}"
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
139 }
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
140 end
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
141 ```
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
142
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
143 # TODO
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
144
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
145 - Default templates for all event types
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
146 - (x)html content
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
147
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
148 # Compatibility
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
149
131b8bfbefb4 mod_pubsub_forgejo: new module for forgejo webhooks
nicoco <nicoco@nicoco.fr>
parents:
diff changeset
150 Works with prosody 0.12