@@ -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