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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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}})