Skip to content

Commit 0e6282f

Browse files
committed
fix: except Route implementation
1 parent 7706515 commit 0e6282f

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

aws_lambda_powertools/event_handler/api_gateway.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ def __init__(
320320
openapi_extensions: dict[str, Any] | None = None,
321321
deprecated: bool = False,
322322
middlewares: list[Callable[..., Response]] | None = None,
323-
custom_response_validation_http_code: int | HTTPStatus | None = None,
323+
custom_response_validation_http_code: HTTPStatus | None = None,
324324
):
325325
"""
326326
Internally used Route Configuration
@@ -399,7 +399,7 @@ def __init__(
399399
# _body_field is used to cache the dependant model for the body field
400400
self._body_field: ModelField | None = None
401401

402-
self.custom_response_validation_http_code: int | HTTPStatus | None = custom_response_validation_http_code
402+
self.custom_response_validation_http_code: HTTPStatus | None = custom_response_validation_http_code
403403

404404
def __call__(
405405
self,
@@ -2127,6 +2127,29 @@ def swagger_handler():
21272127
body=body,
21282128
)
21292129

2130+
def _validate_route_response_validation_error_http_code(
2131+
self,
2132+
custom_response_validation_http_code: int | HTTPStatus | None,
2133+
) -> HTTPStatus | None:
2134+
if custom_response_validation_http_code and not self._enable_validation:
2135+
msg = (
2136+
"'custom_response_validation_http_code' cannot be set for route when enable_validation is False "
2137+
"on resolver."
2138+
)
2139+
raise ValueError(msg)
2140+
2141+
if (
2142+
not isinstance(custom_response_validation_http_code, HTTPStatus)
2143+
and custom_response_validation_http_code is not None
2144+
):
2145+
try:
2146+
custom_response_validation_http_code = HTTPStatus(custom_response_validation_http_code)
2147+
except ValueError:
2148+
msg = f"'{custom_response_validation_http_code}' must be an integer representing an HTTP status code."
2149+
raise ValueError(msg) from None
2150+
2151+
return custom_response_validation_http_code
2152+
21302153
def route(
21312154
self,
21322155
rule: str,

0 commit comments

Comments
 (0)