summaryrefslogtreecommitdiff
path: root/server/szurubooru/rest/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/szurubooru/rest/app.py')
-rw-r--r--server/szurubooru/rest/app.py16
1 files changed, 6 insertions, 10 deletions
diff --git a/server/szurubooru/rest/app.py b/server/szurubooru/rest/app.py
index c098bd0..26bbc44 100644
--- a/server/szurubooru/rest/app.py
+++ b/server/szurubooru/rest/app.py
@@ -1,4 +1,4 @@
-import cgi
+from multipart import parse_form_data, is_form_request
import json
import re
import urllib.parse
@@ -40,15 +40,11 @@ def _create_context(env: Dict[str, Any]) -> context.Context:
files = {}
params = dict(urllib.parse.parse_qsl(env.get("QUERY_STRING", "")))
- if "multipart" in env.get("CONTENT_TYPE", ""):
- form = cgi.FieldStorage(fp=env["wsgi.input"], environ=env)
- if not form.list:
- raise errors.HttpBadRequest(
- "ValidationError", "No files attached."
- )
- body = form.getvalue("metadata")
- for key in form:
- files[key] = form.getvalue(key)
+ if is_form_request(env):
+ _, files = parse_form_data(env)
+ files = {n: f.raw for (n, f) in files.items()}
+ body = files["metadata"]
+ print(files)
else:
body = env["wsgi.input"].read()