Update
This commit is contained in:
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user