Files
saladeaula.digital/api.saladeaula.digital/app/form_data.py

34 lines
724 B
Python

from io import BytesIO
from typing import Any
from python_multipart import parse_form
def parse(
headers: dict[str, Any],
body: BytesIO,
) -> dict[str, Any]:
ret = {}
def on_field(field):
field_name = field.field_name.decode().split('.')
if len(field_name) > 1:
key, sub = field_name
if key not in ret:
ret[key] = {}
ret[key][sub] = field.value
else:
key, *_ = field_name
ret[key] = field.value
def on_file(file):
file.file_object.seek(0)
ret[file.field_name.decode()] = file.file_object.read(-1)
parse_form(headers, body, on_field=on_field, on_file=on_file)
return ret