Skip to content

Commit 5654cad

Browse files
authored
Merge branch 'adafruit:main' into connection-manager
2 parents e16bc0d + 2afa03d commit 5654cad

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

adafruit_requests.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,18 @@ def __init__(
377377
global _global_session
378378
_global_session = self
379379

380+
@staticmethod
381+
def _check_headers(headers: Dict[str, str]):
382+
if not isinstance(headers, dict):
383+
raise AttributeError("headers must be in dict format")
384+
385+
for key, value in headers.items():
386+
if isinstance(value, (str, bytes)) or value is None:
387+
continue
388+
raise AttributeError(
389+
f"Header part ({value}) from {key} must be of type str or bytes, not {type(value)}"
390+
)
391+
380392
@staticmethod
381393
def _send(socket: SocketType, data: bytes):
382394
total_sent = 0
@@ -403,9 +415,14 @@ def _send_as_bytes(self, socket: SocketType, data: str):
403415
return self._send(socket, bytes(data, "utf-8"))
404416

405417
def _send_header(self, socket, header, value):
418+
if value is None:
419+
return
406420
self._send_as_bytes(socket, header)
407421
self._send(socket, b": ")
408-
self._send_as_bytes(socket, value)
422+
if isinstance(value, bytes):
423+
self._send(socket, value)
424+
else:
425+
self._send_as_bytes(socket, value)
409426
self._send(socket, b"\r\n")
410427

411428
# pylint: disable=too-many-arguments
@@ -419,6 +436,9 @@ def _send_request(
419436
data: Any,
420437
json: Any,
421438
):
439+
# Check headers
440+
self._check_headers(headers)
441+
422442
# Convert data
423443
content_type_header = None
424444

0 commit comments

Comments
 (0)