@@ -529,6 +529,18 @@ def _get_socket(
529
529
self ._socket_free [sock ] = False
530
530
return sock
531
531
532
+ @staticmethod
533
+ def _check_headers (headers : Dict [str , str ]):
534
+ if not isinstance (headers , dict ):
535
+ raise AttributeError ("headers must be in dict format" )
536
+
537
+ for key , value in headers .items ():
538
+ if isinstance (value , (str , bytes )) or value is None :
539
+ continue
540
+ raise AttributeError (
541
+ f"Header part ({ value } ) from { key } must be of type str or bytes, not { type (value )} "
542
+ )
543
+
532
544
@staticmethod
533
545
def _send (socket : SocketType , data : bytes ):
534
546
total_sent = 0
@@ -555,9 +567,14 @@ def _send_as_bytes(self, socket: SocketType, data: str):
555
567
return self ._send (socket , bytes (data , "utf-8" ))
556
568
557
569
def _send_header (self , socket , header , value ):
570
+ if value is None :
571
+ return
558
572
self ._send_as_bytes (socket , header )
559
573
self ._send (socket , b": " )
560
- self ._send_as_bytes (socket , value )
574
+ if isinstance (value , bytes ):
575
+ self ._send (socket , value )
576
+ else :
577
+ self ._send_as_bytes (socket , value )
561
578
self ._send (socket , b"\r \n " )
562
579
563
580
# pylint: disable=too-many-arguments
@@ -571,6 +588,9 @@ def _send_request(
571
588
data : Any ,
572
589
json : Any ,
573
590
):
591
+ # Check headers
592
+ self ._check_headers (headers )
593
+
574
594
# Convert data
575
595
content_type_header = None
576
596
0 commit comments