1
- from typing import Dict , Tuple
1
+ try :
2
+ from typing import Dict , Tuple
3
+ except ImportError :
4
+ pass
2
5
3
6
4
7
class HTTPRequest :
5
8
6
9
method : str
7
10
path : str
8
- query_params : Dict [str , str ] = {}
11
+ query_params : Dict [str , str ]
9
12
http_version : str
10
13
11
- headers : Dict [str , str ] = {}
14
+ headers : Dict [str , str ]
12
15
body : bytes | None
13
16
14
17
raw_request : bytes
@@ -21,15 +24,15 @@ def __init__(
21
24
if raw_request is None : raise ValueError ("raw_request cannot be None" )
22
25
23
26
try :
24
- self .method , self .path , self .query_params , self .http_version = self .parse_start_line (raw_request )
25
- self .headers = self .parse_headers (raw_request )
26
- self .body = self .parse_body (raw_request )
27
+ self .method , self .path , self .query_params , self .http_version = self ._parse_start_line (raw_request )
28
+ self .headers = self ._parse_headers (raw_request )
29
+ self .body = self ._parse_body (raw_request )
27
30
except Exception as error :
28
31
raise ValueError ("Unparseable raw_request: " , raw_request ) from error
29
32
30
33
31
34
@staticmethod
32
- def parse_start_line (raw_request : bytes ) -> Tuple (str , str , Dict [str , str ], str ):
35
+ def _parse_start_line (raw_request : bytes ) -> Tuple (str , str , Dict [str , str ], str ):
33
36
"""Parse HTTP Start line to method, path, query_params and http_version."""
34
37
35
38
start_line = raw_request .decode ("utf8" ).splitlines ()[0 ]
@@ -45,7 +48,7 @@ def parse_start_line(raw_request: bytes) -> Tuple(str, str, Dict[str, str], str)
45
48
46
49
47
50
@staticmethod
48
- def parse_headers (raw_request : bytes ) -> Dict [str , str ]:
51
+ def _parse_headers (raw_request : bytes ) -> Dict [str , str ]:
49
52
"""Parse HTTP headers from raw request."""
50
53
parsed_request_lines = raw_request .decode ("utf8" ).splitlines ()
51
54
empty_line = parsed_request_lines .index ("" )
@@ -54,7 +57,7 @@ def parse_headers(raw_request: bytes) -> Dict[str, str]:
54
57
55
58
56
59
@staticmethod
57
- def parse_body (raw_request : bytes ) -> Dict [str , str ]:
60
+ def _parse_body (raw_request : bytes ) -> Dict [str , str ]:
58
61
"""Parse HTTP body from raw request."""
59
62
parsed_request_lines = raw_request .decode ("utf8" ).splitlines ()
60
63
empty_line = parsed_request_lines .index ("" )
0 commit comments