@@ -62,7 +62,8 @@ async def auth_callback(request: Request):
6262
6363else :
6464 def require_login (request : Request ):
65- return None
65+ request .session ['user' ] = "anonymous"
66+ return request .session ['user' ]
6667
6768
6869@app .get ("/proxy" , include_in_schema = False )
@@ -123,7 +124,7 @@ def apply_proxy_to_openapi(openapi_url: str, header: str = None) -> str:
123124
124125
125126@app .get ("/" , response_class = HTMLResponse )
126- async def docs (request : Request , user = Depends (require_login )):
127+ async def docs (request : Request , template : str = None , user = Depends (require_login )):
127128 """
128129 Main documentation page.
129130 """
@@ -153,6 +154,15 @@ async def docs(request: Request, user=Depends(require_login)):
153154 for swagger in swaggers :
154155 swagger ["url" ] = apply_proxy_to_openapi (swagger .get ("url" ), parse_headers (swagger .get ("header" )))
155156
157+ if template and template .lower () in ["redoc" , "swagger-ui" ]:
158+ return templates .TemplateResponse (
159+ f"{ template .lower ()} .html" ,
160+ {
161+ "request" : request ,
162+ "urls" : swaggers ,
163+ "title" : os .environ .get ("TITLE" , "API Documentation" ),
164+ }
165+ )
156166 interface = os .environ .get ("INTERFACE" , "swagger-ui" ).lower ()
157167 if interface not in ["swagger-ui" , "redoc" ]:
158168 interface = "swagger-ui"
@@ -173,15 +183,7 @@ async def config(request: Request):
173183 try :
174184 with open ('static/openapi/urls.json' ) as f :
175185 swaggers = json .load (f )
176- except FileNotFoundError :
177- swaggers = [
178- {
179- "url" : "/openapi.json" ,
180- "name" : "Swagger Aggregator" ,
181- "header" : "" ,
182- }
183- ]
184- except json .JSONDecodeError :
186+ except :
185187 swaggers = [
186188 {
187189 "url" : "/openapi.json" ,
@@ -196,5 +198,17 @@ async def config(request: Request):
196198 "request" : request ,
197199 "urls" : swaggers ,
198200 "title" : os .environ .get ("TITLE" , "API Documentation - Config" ),
201+ "session" : request .session ,
202+ "settings" : {
203+ "enable_oidc" : ENABLE_OIDC ,
204+ "oidc_client_id" : os .environ .get ("OIDC_CLIENT_ID" ),
205+ "oidc_metadata_url" : os .environ .get ("OIDC_METADATA_URL" ),
206+ "interface" : os .environ .get ("INTERFACE" , "swagger-ui" ).lower (),
207+ "path_key" : os .environ .get ("SWAGGER_OPERATOR_PATH_KEY" , "swagger-operator-path" ),
208+ "name_key" : os .environ .get ("SWAGGER_OPERATOR_NAME_KEY" , "swagger-operator-name" ),
209+ "port_key" : os .environ .get ("SWAGGER_OPERATOR_PORT_KEY" , "swagger-operator-port" ),
210+ "header_key" : os .environ .get ("SWAGGER_OPERATOR_HEADER_KEY" , "swagger-operator-header" ),
211+ "proxy_timeout" : os .environ .get ("PROXY_TIMEOUT" , 10 ),
212+ }
199213 }
200214 )
0 commit comments