Skip to content

Commit ca2f648

Browse files
authored
Merge pull request #3 from shapr/http_request_line
Change request handling to use split instead of regular expressions.
2 parents 96c6f3e + bfbcf1c commit ca2f648

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

adafruit_httpserver.py

+6-9
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
from errno import EAGAIN, ECONNRESET
2828
import os
29-
import re
3029

3130
__version__ = "0.0.0-auto.0"
3231
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer.git"
@@ -60,8 +59,6 @@ def __str__(self):
6059

6160

6261
class _HTTPRequest:
63-
_REQUEST_RE = re.compile(r"(\S+)\s+(\S+)\s")
64-
6562
def __init__(
6663
self, path: str = "", method: str = "", raw_request: bytes = None
6764
) -> None:
@@ -70,12 +67,12 @@ def __init__(
7067
self.method = method
7168
else:
7269
# Parse request data from raw request
73-
match = self._REQUEST_RE.match(raw_request.decode("utf8"))
74-
if match:
75-
self.path = match.group(2)
76-
self.method = match.group(1)
77-
else:
78-
raise ValueError("Unparseable raw_request:", raw_request)
70+
request_text = raw_request.decode("utf8")
71+
first_line = request_text[: request_text.find("\n")]
72+
try:
73+
(self.method, self.path, _httpversion) = first_line.split()
74+
except ValueError as exc:
75+
raise ValueError("Unparseable raw_request: ", raw_request) from exc
7976

8077
def __hash__(self) -> int:
8178
return hash(self.method) ^ hash(self.path)

0 commit comments

Comments
 (0)