in samtranslator/utils/py27hash_fix.py [0:0]
def _template_has_httpapi_resource_with_default_authorizer(template): # type: ignore[no-untyped-def]
"""
Returns true if the template contains at least one AWS::Serverless::HttpApi resource with DefaultAuthorizer configured
"""
# Check whether DefaultAuthorizer is defined in Globals.HttpApi
has_global_httpapi_default_authorizer = False
if "Globals" in template and isinstance(template["Globals"], dict):
globals_dict = template["Globals"]
if "HttpApi" in globals_dict and isinstance(globals_dict["HttpApi"], dict):
globals_httpapi_dict = globals_dict["HttpApi"]
if "Auth" in globals_httpapi_dict and isinstance(globals_httpapi_dict["Auth"], dict):
has_global_httpapi_default_authorizer = bool(globals_httpapi_dict["Auth"].get("DefaultAuthorizer"))
# Check if there is explicit HttpApi resource
for resource_dict in template.get("Resources", {}).values():
if isinstance(resource_dict, dict) and resource_dict.get("Type") == "AWS::Serverless::HttpApi":
auth = resource_dict.get("Properties", {}).get("Auth", {})
if (
auth and isinstance(auth, dict) and auth.get("DefaultAuthorizer")
) or has_global_httpapi_default_authorizer:
return True
# Check if there is any httpapi event for implicit api
if has_global_httpapi_default_authorizer:
for resource_dict in template.get("Resources", {}).values():
if isinstance(resource_dict, dict) and resource_dict.get("Type") == "AWS::Serverless::Function":
events = resource_dict.get("Properties", {}).get("Events", {})
if isinstance(events, dict):
for event_dict in events.values():
if event_dict and isinstance(event_dict, dict) and event_dict.get("Type") == "HttpApi":
return True
return False