This commit is contained in:
yongtenglei 2025-12-01 14:07:09 +08:00
parent 0ccb23328e
commit 3046331458

View file

@ -22,6 +22,7 @@ import os
import time import time
from copy import deepcopy from copy import deepcopy
from functools import wraps from functools import wraps
from typing import Any
import requests import requests
import trio import trio
@ -44,9 +45,10 @@ from common import settings
requests.models.complexjson.dumps = functools.partial(json.dumps, cls=CustomJSONEncoder) requests.models.complexjson.dumps = functools.partial(json.dumps, cls=CustomJSONEncoder)
async def _coerce_request_data() -> dict: async def _coerce_request_data() -> dict:
"""Fetch JSON body with sane defaults; fallback to form data.""" """Fetch JSON body with sane defaults; fallback to form data."""
payload = None payload: Any = None
last_error: Exception | None = None last_error: Exception | None = None
try: try:
@ -61,13 +63,20 @@ async def _coerce_request_data() -> dict:
payload = form.to_dict() payload = form.to_dict()
except Exception as e: except Exception as e:
last_error = e last_error = e
payload = None
if payload is None: if payload is None:
if last_error is not None: if last_error is not None:
raise last_error raise last_error
raise ValueError("No JSON body or form data found in request.") raise ValueError("No JSON body or form data found in request.")
return payload or {} if isinstance(payload, dict):
return payload or {}
if isinstance(payload, str):
raise AttributeError("'str' object has no attribute 'get'")
raise TypeError(f"Unsupported request payload type: {type(payload)!r}")
async def get_request_json(): async def get_request_json():
return await _coerce_request_data() return await _coerce_request_data()