Software /
code /
prosody-modules
File
mod_rest/apidemo.lib.lua @ 4895:2542fd80cd15
mod_turn_external: Fix type of config option (thanks mirux)
There was a separate boolean option to enable TLS before, but it was
merged with the port number option and it seems the typed API interface
got confused.
Backport of trunk rev aa7a8aa64d3f
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 15 Feb 2022 21:51:52 +0100 |
parent | 4728:1c6d353550cc |
child | 4928:d5612dcf6733 |
line wrap: on
line source
local _M = {}; local api_demo = module:get_option_path("rest_demo_resources", nil); local http_files = require "net.http.files"; local mime_map = module:shared("/*/http_files/mime").types or {css = "text/css"; js = "application/javascript"}; _M.resources = http_files.serve({ path = api_demo; mime_map = mime_map; }); local index do local f = assert(io.open(api_demo.."/index.html"), "'rest_demo_resources' should point to the 'dist' directory"); index = f:read("*a"); f:close(); -- SUCH HACK, VERY GSUB, WOW! index = index:gsub("(%s?url%s*:%s*)%b\"\"", string.format("%%1%q", module:http_url().."/demo/openapi.yaml"), 1); index = index:gsub("(%s*SwaggerUIBundle%s*%(%s*{)(%s*)", "%1%2validatorUrl: false,%2"); end do local f = module:load_resource("res/openapi.yaml"); _M.schema = { headers = { content_type = "text/x-yaml"; }; body = f:read("*a"); } f:close(); end _M.redirect = { status_code = 303; headers = { location = module:http_url().."/demo/"; }; }; _M.main_page = { headers = { content_type = "text/html"; content_security_policy = "default-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; frame-ancestors 'none'"; }; body = index; } return _M