mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 08:11:00 +00:00
ec34cae618
also utils.parse_content_type -> http.headers.parse_content_type
33 lines
888 B
Python
33 lines
888 B
Python
import re
|
|
|
|
from . import headers
|
|
|
|
|
|
def decode(hdrs, content):
|
|
"""
|
|
Takes a multipart boundary encoded string and returns list of (key, value) tuples.
|
|
"""
|
|
v = hdrs.get("content-type")
|
|
if v:
|
|
v = headers.parse_content_type(v)
|
|
if not v:
|
|
return []
|
|
try:
|
|
boundary = v[2]["boundary"].encode("ascii")
|
|
except (KeyError, UnicodeError):
|
|
return []
|
|
|
|
rx = re.compile(br'\bname="([^"]+)"')
|
|
r = []
|
|
|
|
for i in content.split(b"--" + boundary):
|
|
parts = i.splitlines()
|
|
if len(parts) > 1 and parts[0][0:2] != b"--":
|
|
match = rx.search(parts[1])
|
|
if match:
|
|
key = match.group(1)
|
|
value = b"".join(parts[3 + parts[2:].index(b""):])
|
|
r.append((key, value))
|
|
return r
|
|
return []
|