This commit is contained in:
2021-03-26 18:25:03 +01:00
parent 7476870acc
commit fdbd865889
11 changed files with 297 additions and 136 deletions

View File

@@ -3,6 +3,8 @@ import socket
from io import BufferedReader
from typing import Tuple
from httplib.exceptions import BadRequest
BUFSIZE = 4096
TIMEOUT = 3
FORMAT = "UTF-8"
@@ -61,17 +63,28 @@ class HTTPSocket:
def read(self, size=BUFSIZE, blocking=True) -> bytes:
if blocking:
return self.file.read(size)
buffer = self.file.read(size)
else:
buffer = self.file.read1(size)
return self.file.read1(size)
if len(buffer) == 0:
raise ConnectionAbortedError
return buffer
def read_line(self):
return str(self.read_bytes_line(), FORMAT)
try:
line = str(self.read_bytes_line(), FORMAT)
except UnicodeDecodeError:
# Expected UTF-8
raise BadRequest()
return line
def read_bytes_line(self) -> bytes:
line = self.file.readline(MAXLINE + 1)
if len(line) > MAXLINE:
raise InvalidResponse("Line too long")
elif len(line) == 0:
raise ConnectionAbortedError
return line