Skip to content

Commit 34feaa8

Browse files
committed
fix(middleware): enhance JSON parsing error handling
Added logging for JSON parsing errors in the JsonResponseMiddleware. If an invalid JSON is received, a 502 response is returned with an error message, improving error visibility and response management.
1 parent 8a09873 commit 34feaa8

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

src/stac_auth_proxy/utils/middleware.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
"""Utilities for middleware response handling."""
22

33
import json
4+
import logging
45
from abc import ABC, abstractmethod
56
from typing import Any, Optional
67

78
from starlette.datastructures import MutableHeaders
89
from starlette.requests import Request
10+
from starlette.responses import JSONResponse
911
from starlette.types import ASGIApp, Message, Receive, Scope, Send
1012

13+
logger = logging.getLogger(__name__)
14+
1115

1216
class JsonResponseMiddleware(ABC):
1317
"""Base class for middleware that transforms JSON response bodies."""
@@ -78,7 +82,18 @@ async def transform_response(message: Message) -> None:
7882

7983
# Transform the JSON body
8084
if body:
81-
data = json.loads(body)
85+
try:
86+
data = json.loads(body)
87+
except json.JSONDecodeError as e:
88+
logger.error("Error parsing JSON: %s", e)
89+
logger.error("Body: %s", body)
90+
logger.error("Response scope: %s", scope)
91+
response = JSONResponse(
92+
{"error": "Received invalid JSON from upstream serverso"},
93+
status_code=502,
94+
)
95+
await response(scope, receive, send)
96+
return
8297
transformed = self.transform_json(data, request=request)
8398
body = json.dumps(transformed).encode()
8499

0 commit comments

Comments
 (0)