Annotate

mod_http_debug/mod_http_debug.lua @ 5551:8bfcedd93a72

mod_rest: List all error conditions in OpenAPI spec These are not handled by datamanager but by util.stanza and util.error, so they are not represented in the JSON schema file.
author Kim Alvefur <zash@zash.se>
date Sat, 17 Jun 2023 16:26:33 +0200
parent 5492:b6af4d1ff8c1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5333
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local json = require "util.json"
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 module:depends("http")
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
4 local function handle_request(event)
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
5 local request = event.request;
5491
7842502c1157 mod_http_debug: Log some extended info about requests
Kim Alvefur <zash@zash.se>
parents: 5490
diff changeset
6 (request.log or module._log)("debug", "%s -- %s %q HTTP/%s -- %q -- %s", request.ip, request.method, request.url, request.httpversion, request.headers, request.body);
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
7 return {
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
8 status_code = 200;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
9 headers = { content_type = "application/json" };
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
10 host = module.host;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
11 body = json.encode {
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
12 body = request.body;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
13 headers = request.headers;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
14 httpversion = request.httpversion;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
15 id = request.id;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
16 ip = request.ip;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
17 method = request.method;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
18 path = request.path;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
19 secure = request.secure;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
20 url = request.url;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
21 };
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
22 }
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
23 end
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
24
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
25 local methods = module:get_option_set("http_debug_methods", { "GET"; "HEAD"; "DELETE"; "OPTIONS"; "PATCH"; "POST"; "PUT" });
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
26 local route = {};
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
27 for method in methods do
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
28 route[method] = handle_request;
5492
b6af4d1ff8c1 mod_http_debug: Handle any path under /debug/* as well
Kim Alvefur <zash@zash.se>
parents: 5491
diff changeset
29 route[method .. " /*"] = handle_request;
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
30 end
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
31
5333
10fcfa7e62a1 mod_http_debug: Module that echos back HTTP request info for debugging
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 module:provides("http", {
5490
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
33 route = route;
91564b57e595 mod_http_debug: Handle more HTTP methods
Kim Alvefur <zash@zash.se>
parents: 5333
diff changeset
34 })