From 6a1e1bc3acc7a90be87479487fb764c6384e1eb9 Mon Sep 17 00:00:00 2001 From: Viraj Kanwade Date: Thu, 15 Aug 2024 21:29:01 -0700 Subject: [PATCH] [#4] safely skip unsupported security definitions --- src/fastapi_swagger2/utils.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/fastapi_swagger2/utils.py b/src/fastapi_swagger2/utils.py index 8ad5aae..75f87a6 100644 --- a/src/fastapi_swagger2/utils.py +++ b/src/fastapi_swagger2/utils.py @@ -110,6 +110,7 @@ def _map_oauth2_flow(flow_key: str, flow: Dict[str, Any]) -> Dict[str, Any]: security_definitions = {} operation_security = [] for security_requirement in flat_dependant.security_requirements: + skip: bool = False # fastapi.security.* which gets model from fastapi.openapi.models security_definition = jsonable_encoder( security_requirement.security_scheme.model, @@ -120,6 +121,7 @@ def _map_oauth2_flow(flow_key: str, flow: Dict[str, Any]) -> Dict[str, Any]: if security_definition.get("scheme", "basic") == "basic": security_definition = {"type": "basic"} else: + skip = True logger.warning( f"fastapi_swagger2: Unable to handle security_definition: {security_definition}" ) @@ -148,12 +150,14 @@ def _map_oauth2_flow(flow_key: str, flow: Dict[str, Any]) -> Dict[str, Any]: {_security_name: security_requirement.scopes} ) else: + skip = True logger.warning( f"fastapi_swagger2: Unable to handle security_definition: {security_definition}" ) - security_name = security_requirement.security_scheme.scheme_name - security_definitions[security_name] = security_definition - operation_security.append({security_name: security_requirement.scopes}) + if not skip: + security_name = security_requirement.security_scheme.scheme_name + security_definitions[security_name] = security_definition + operation_security.append({security_name: security_requirement.scopes}) return security_definitions, operation_security