From 3ece0418dbd62dbe1915b7ed8550dcf08ed82b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Sun, 3 Dec 2023 18:46:02 +0100 Subject: [PATCH] provide both swagger and redoc --- src/c3nav/api/ninja.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/c3nav/api/ninja.py b/src/c3nav/api/ninja.py index eca1e5c8..34046d68 100644 --- a/src/c3nav/api/ninja.py +++ b/src/c3nav/api/ninja.py @@ -1,4 +1,5 @@ from ninja import NinjaAPI, Redoc, Swagger +from ninja.openapi.docs import DocsBase from ninja.operation import Operation from ninja.schema import NinjaGenerateJsonSchema @@ -13,7 +14,28 @@ class c3navAPI(NinjaAPI): return result +class SwaggerAndRedoc(DocsBase): + swagger_config = Swagger(settings={ + "persistAuthorization": True, + "defaultModelRendering": "model", + }) + redoc_config = Redoc(settings={ + + }) + + def render_page(self, request, api): + print(request.GET) + if request.GET.get('swagger', None) is not None: + return self.swagger_config.render_page(request, api) + return self.redoc_config.render_page(request, api) + + description = """ +We provide two API documentation viewers: + +* [Redoc](/api/v2/): more comprehensive and clean *(default)* +* [Swagger](/api/v2/?swagger): less good, but has a built-in API client + Nearly all endpoints require authentication, but guest authentication can be used. API endpoints may change to add more features and properties,