66import os
77import requests
88import logging
9- import yaml
109from urllib .parse import quote , unquote
1110from starlette .responses import RedirectResponse
1211from authlib .integrations .starlette_client import OAuth
@@ -67,7 +66,7 @@ def require_login(request: Request):
6766
6867
6968@app .get ("/proxy" , include_in_schema = False )
70- async def proxy (url : str , headers : str = None ):
69+ async def proxy (url : str , headers : str = None , user = Depends ( require_login ) ):
7170 """
7271 Proxy endpoint to fetch the OpenAPI document from a given URL (JSON or YAML).
7372 """
@@ -83,17 +82,8 @@ async def proxy(url: str, headers: str = None):
8382 # Se for YAML, repasse como text/yaml
8483 elif "yaml" in content_type or "yml" in content_type :
8584 return Response (content = resp .content , media_type = "text/yaml" )
86- # Se não souber, tente detectar pelo conteúdo
87- try :
88- json .loads (resp .text )
89- return Response (content = resp .content , media_type = "application/json" )
90- except Exception :
91- try :
92- yaml .safe_load (resp .text )
93- return Response (content = resp .content , media_type = "text/yaml" )
94- except Exception :
95- # Retorne como texto puro se não conseguir detectar
96- return Response (content = resp .content , media_type = "text/plain" )
85+ else :
86+ raise HTTPException (status_code = 400 , detail = "Unsupported content type" )
9787 except requests .RequestException as e :
9888 logger .error (f"Error fetching OpenAPI document: { e } " )
9989 raise HTTPException (status_code = 500 , detail = {"error" : "Failed to fetch OpenAPI document" , "details" : str (e )})
@@ -178,7 +168,7 @@ async def docs(request: Request, template:str=None, user=Depends(require_login))
178168 )
179169
180170@app .get ("/config" , response_class = HTMLResponse , include_in_schema = False )
181- async def config (request : Request ):
171+ async def config (request : Request , user = Depends ( require_login ) ):
182172 """
183173 Configuration page for the OpenAPI URLs.
184174 """
0 commit comments