@@ -529,6 +529,18 @@ def _get_socket(
529529 self ._socket_free [sock ] = False
530530 return sock
531531
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+
532544 @staticmethod
533545 def _send (socket : SocketType , data : bytes ):
534546 total_sent = 0
@@ -555,9 +567,14 @@ def _send_as_bytes(self, socket: SocketType, data: str):
555567 return self ._send (socket , bytes (data , "utf-8" ))
556568
557569 def _send_header (self , socket , header , value ):
570+ if value is None :
571+ return
558572 self ._send_as_bytes (socket , header )
559573 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 )
561578 self ._send (socket , b"\r \n " )
562579
563580 # pylint: disable=too-many-arguments
@@ -571,6 +588,9 @@ def _send_request(
571588 data : Any ,
572589 json : Any ,
573590 ):
591+ # Check headers
592+ self ._check_headers (headers )
593+
574594 # Convert data
575595 content_type_header = None
576596
0 commit comments