ci
This commit is contained in:
parent
0ccb23328e
commit
3046331458
1 changed files with 11 additions and 2 deletions
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue