@@ -34,7 +34,7 @@ def _add_field_value(self, field_name: str, value: Union[str, bytes]) -> None:
34
34
self ._storage [field_name ].append (value )
35
35
36
36
@staticmethod
37
- def _encode_html_entities (value ) :
37
+ def _encode_html_entities (value : str ) -> str :
38
38
"""Encodes unsafe HTML characters."""
39
39
return (
40
40
str (value )
@@ -84,11 +84,11 @@ def __repr__(self) -> str:
84
84
85
85
class QueryParams (_IFieldStorage ):
86
86
"""
87
- Class for parsing and storing GET quer parameters requests.
87
+ Class for parsing and storing GET query parameters requests.
88
88
89
89
Examples::
90
90
91
- query_params = QueryParams(b "foo=bar&baz=qux&baz=quux")
91
+ query_params = QueryParams("foo=bar&baz=qux&baz=quux")
92
92
# QueryParams({"foo": "bar", "baz": ["qux", "quux"]})
93
93
94
94
query_params.get("foo") # "bar"
@@ -99,7 +99,7 @@ class QueryParams(_IFieldStorage):
99
99
query_params.fields # ["foo", "baz"]
100
100
"""
101
101
102
- _storage : Dict [str , List [Union [ str , bytes ] ]]
102
+ _storage : Dict [str , List [str ]]
103
103
104
104
def __init__ (self , query_string : str ) -> None :
105
105
self ._storage = {}
@@ -151,7 +151,7 @@ def __init__(self, data: bytes, content_type: str) -> None:
151
151
self ._parse_text_plain (data )
152
152
153
153
def _parse_x_www_form_urlencoded (self , data : bytes ) -> None :
154
- decoded_data = data .decode ()
154
+ decoded_data = data .decode ("utf-8" )
155
155
156
156
for field_name , value in [
157
157
key_value .split ("=" , 1 ) for key_value in decoded_data .split ("&" )
@@ -169,12 +169,12 @@ def _parse_multipart_form_data(self, data: bytes, boundary: str) -> None:
169
169
self ._add_field_value (field_name , value )
170
170
171
171
def _parse_text_plain (self , data : bytes ) -> None :
172
- lines = data .split (b "\r \n " )[:- 1 ]
172
+ lines = data .decode ( "utf-8" ). split ("\r \n " )[:- 1 ]
173
173
174
174
for line in lines :
175
- field_name , value = line .split (b "=" , 1 )
175
+ field_name , value = line .split ("=" , 1 )
176
176
177
- self ._add_field_value (field_name . decode () , value . decode () )
177
+ self ._add_field_value (field_name , value )
178
178
179
179
180
180
class Request :
@@ -231,7 +231,7 @@ class Request:
231
231
232
232
raw_request : bytes
233
233
"""
234
- Raw ' bytes' that were received from the client.
234
+ Raw `` bytes`` that were received from the client.
235
235
236
236
Should **not** be modified directly.
237
237
"""
@@ -340,10 +340,10 @@ def _raw_body_bytes(self) -> bytes:
340
340
return self .raw_request [empty_line_index + 4 :]
341
341
342
342
@staticmethod
343
- def _parse_start_line (header_bytes : bytes ) -> Tuple [str , str , Dict [ str , str ] , str ]:
343
+ def _parse_start_line (header_bytes : bytes ) -> Tuple [str , str , QueryParams , str ]:
344
344
"""Parse HTTP Start line to method, path, query_params and http_version."""
345
345
346
- start_line = header_bytes .decode ("utf8 " ).splitlines ()[0 ]
346
+ start_line = header_bytes .decode ("utf-8 " ).splitlines ()[0 ]
347
347
348
348
method , path , http_version = start_line .split ()
349
349
@@ -359,7 +359,7 @@ def _parse_start_line(header_bytes: bytes) -> Tuple[str, str, Dict[str, str], st
359
359
@staticmethod
360
360
def _parse_headers (header_bytes : bytes ) -> Headers :
361
361
"""Parse HTTP headers from raw request."""
362
- header_lines = header_bytes .decode ("utf8 " ).splitlines ()[1 :]
362
+ header_lines = header_bytes .decode ("utf-8 " ).splitlines ()[1 :]
363
363
364
364
return Headers (
365
365
{
0 commit comments