Restructure _send_raw_request to raise errors early, then process the successful response

This commit is contained in:
Mark Backman
2025-04-29 09:05:14 -04:00
parent 144ae9b611
commit ebed1fc6ea

View File

@@ -40,6 +40,7 @@ class HttpSmartTurnAnalyzer(BaseSmartTurn):
async def _send_raw_request(self, data_bytes: bytes) -> Dict[str, Any]: async def _send_raw_request(self, data_bytes: bytes) -> Dict[str, Any]:
headers = {"Content-Type": "application/octet-stream"} headers = {"Content-Type": "application/octet-stream"}
headers.update(self._headers) headers.update(self._headers)
try: try:
timeout = aiohttp.ClientTimeout(total=self._params.stop_secs) timeout = aiohttp.ClientTimeout(total=self._params.stop_secs)
@@ -49,7 +50,19 @@ class HttpSmartTurnAnalyzer(BaseSmartTurn):
logger.trace("\n--- Response ---") logger.trace("\n--- Response ---")
logger.trace(f"Status Code: {response.status}") logger.trace(f"Status Code: {response.status}")
if response.status == 200: # Check if successful
if response.status != 200:
error_text = await response.text()
logger.trace("Response Content (Error):")
logger.trace(error_text)
if response.status == 500:
logger.warning(f"Smart turn service returned 500 error: {error_text}")
raise Exception(f"Server returned HTTP 500: {error_text}")
else:
response.raise_for_status()
# Process successful response
try: try:
json_data = await response.json() json_data = await response.json()
logger.trace("Response JSON:") logger.trace("Response JSON:")
@@ -61,15 +74,6 @@ class HttpSmartTurnAnalyzer(BaseSmartTurn):
logger.trace("Response Content (non-JSON):") logger.trace("Response Content (non-JSON):")
logger.trace(text) logger.trace(text)
raise Exception(f"Non-JSON response: {text}") raise Exception(f"Non-JSON response: {text}")
else:
error_text = await response.text()
logger.trace("Response Content (Error):")
logger.trace(error_text)
if response.status == 500:
logger.warning(f"Smart turn service returned 500 error: {error_text}")
raise Exception(f"Server returned HTTP 500: {error_text}")
else:
response.raise_for_status()
except asyncio.TimeoutError: except asyncio.TimeoutError:
logger.error(f"Request timed out after {self._params.stop_secs} seconds") logger.error(f"Request timed out after {self._params.stop_secs} seconds")