Software / code / prosody-modules
Annotate
mod_pubsub_get/mod_pubsub_get.lua @ 6319:63ef69b2f046
mod_http_oauth2: Assume Prosody 13.0+ roles are available
Per the README, 0.12 is not supported, so we should not need to worry
about this. Plus it is assumed to be present elsewhere and that would
throw errors.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 02 Jul 2025 16:15:32 +0200 |
| parent | 6204:119c0eb65bf3 |
| rev | line source |
|---|---|
|
6204
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
1 module:depends("http") |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
2 local pubsub_service = module:depends("pubsub").service |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
3 local json = require "util.json" |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
4 |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
5 function handle_GET(event) |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
6 local request, response = event.request, event.response |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
7 local query = request.url.query |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
8 |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
9 if query:sub(1, 5) ~= "node=" then return 400 end |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
10 |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
11 local node = query:sub(6) |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
12 local ok, items = pubsub_service:get_items(node, true) |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
13 |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
14 if not ok then return 404 end |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
15 response.status_code = 200 |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
16 return json.encode(items) |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
17 end |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
18 |
|
119c0eb65bf3
mod_pubsub: new module to fetch pubsub items via HTTP GET
nicoco <nicoco@nicoco.fr>
parents:
diff
changeset
|
19 module:provides("http", {route = {GET = handle_GET}}) |