2# +==== BEGIN CatFeeder =================+
5# ...............)..(.')
7# ...............\(__)|
8# Inspired by Joan Stark
9# source https://www.asciiart.eu/
13# FILE: rapidoc_provider.py
14# CREATION DATE: 26-11-2025
15# LAST Modified: 14:44:59 19-12-2025
17# This is the backend server in charge of making the actual website work.
19# COPYRIGHT: (c) Cat Feeder
20# PURPOSE: RapiDoc documentation provider implementation.
22# +==== END CatFeeder =================+
24from fastapi
import Request, Response
25from display_tty
import Disp, initialise_logger
26from .
import rapidoc_constants
as RAPIDOC_CONST
27from ...http_codes
import HCI, HttpDataTypes
28from ...core.runtime_manager
import RuntimeManager, RI
29from ...server_header
import ServerHeaders
30from ...boilerplates
import BoilerplateResponses, BoilerplateIncoming
34 """RapiDoc documentation provider.
36 Provides RapiDoc API documentation interface with customizable layouts.
39 disp: Disp = initialise_logger(__qualname__,
False)
41 def __init__(self, openapi_url: str, api_title: str, debug: bool =
False) ->
None:
42 """Initialize RapiDoc provider.
45 openapi_url (str): URL to OpenAPI JSON schema.
46 api_title (str): Title of the API.
47 debug (bool, optional): Enable debug logging. Defaults to False.
49 self.
disp.update_disp_debug(debug)
50 self.
disp.log_debug(
"Initialising RapiDoc provider...")
62 self.
disp.log_debug(
"RapiDoc provider initialised")
65 """Serve RapiDoc documentation page.
68 request (Request): The incoming request.
71 Response: HTML response with RapiDoc interface.
73 func_title =
"get_documentation"
74 self.
disp.log_debug(
"Serving RapiDoc documentation", func_title)
78 self.
disp.log_debug(f
"token = {token}", func_title)
80 options_str =
" ".join(
81 [f
'{key}="{value}"' for key, value
in RAPIDOC_CONST.RAPIDOC_OPTIONS.items()])
87 <meta charset="utf-8">
88 <meta name="viewport" content="width=device-width, initial-scale=1">
89 <title>{self.api_title} - RapiDoc</title>
90 <script type="module" src="{RAPIDOC_CONST.RAPIDOC_CDN_URL}"></script>
94 spec-url="{self.openapi_url}"
95 render-style="{RAPIDOC_CONST.RAPIDOC_RENDER_STYLE}"
96 layout="{RAPIDOC_CONST.RAPIDOC_LAYOUT}"
97 theme="{RAPIDOC_CONST.RAPIDOC_THEME}"
98 schema-style="{RAPIDOC_CONST.RAPIDOC_SCHEMA_STYLE}"
104 return HCI.success(content=html_content, content_type=HttpDataTypes.HTML)
107 """Get the URL path for this documentation provider.
112 return RAPIDOC_CONST.RAPIDOC_URL
Response get_documentation(self, Request request)
ServerHeaders server_headers_initialised
BoilerplateResponses boilerplate_responses_initialised
None __init__(self, str openapi_url, str api_title, bool debug=False)
BoilerplateIncoming boilerplate_incoming_initialised
RuntimeManager runtime_manager