Call urllib.parse.unquote on decoded field value (#150)

This commit is contained in:
Alexander Botello 2018-10-28 13:02:25 -05:00 committed by Tom Christie
parent a32ea0a8e8
commit a395726dbe
1 changed files with 9 additions and 10 deletions

View File

@ -1,9 +1,11 @@
from enum import Enum
from starlette.datastructures import Headers
import asyncio
import io import io
import tempfile
import typing import typing
import asyncio
import tempfile
from enum import Enum
from urllib.parse import unquote
from starlette.datastructures import Headers
try: try:
from multipart.multipart import parse_options_header from multipart.multipart import parse_options_header
@ -69,27 +71,22 @@ class FormParser:
self.messages = [] # type: typing.List[typing.Tuple[FormMessage, bytes]] self.messages = [] # type: typing.List[typing.Tuple[FormMessage, bytes]]
def on_field_start(self) -> None: def on_field_start(self) -> None:
print("on_field_start")
message = (FormMessage.FIELD_START, b"") message = (FormMessage.FIELD_START, b"")
self.messages.append(message) self.messages.append(message)
def on_field_name(self, data: bytes, start: int, end: int) -> None: def on_field_name(self, data: bytes, start: int, end: int) -> None:
print("on_field_name")
message = (FormMessage.FIELD_NAME, data[start:end]) message = (FormMessage.FIELD_NAME, data[start:end])
self.messages.append(message) self.messages.append(message)
def on_field_data(self, data: bytes, start: int, end: int) -> None: def on_field_data(self, data: bytes, start: int, end: int) -> None:
print("on_field_data")
message = (FormMessage.FIELD_DATA, data[start:end]) message = (FormMessage.FIELD_DATA, data[start:end])
self.messages.append(message) self.messages.append(message)
def on_field_end(self) -> None: def on_field_end(self) -> None:
print("on_field_end")
message = (FormMessage.FIELD_END, b"") message = (FormMessage.FIELD_END, b"")
self.messages.append(message) self.messages.append(message)
def on_end(self) -> None: def on_end(self) -> None:
print("on_end")
message = (FormMessage.END, b"") message = (FormMessage.END, b"")
self.messages.append(message) self.messages.append(message)
@ -127,7 +124,9 @@ class FormParser:
elif message_type == FormMessage.FIELD_DATA: elif message_type == FormMessage.FIELD_DATA:
field_value += message_bytes field_value += message_bytes
elif message_type == FormMessage.FIELD_END: elif message_type == FormMessage.FIELD_END:
result[field_name.decode("latin-1")] = field_value.decode("latin-1") result[field_name.decode("latin-1")] = unquote(
field_value.decode("latin-1")
)
elif message_type == FormMessage.END: elif message_type == FormMessage.END:
pass pass