7171from pycti .utils .opencti_stix2_utils import OpenCTIStix2Utils
7272
7373
74+ def build_request_headers (token : str , custom_headers : str , app_logger ):
75+ headers_dict = {
76+ "User-Agent" : "pycti/" + __version__ ,
77+ "Authorization" : "Bearer " + token ,
78+ }
79+ # Build and add custom headers
80+ if custom_headers is not None :
81+ for header_pair in custom_headers .strip ().split (";" ):
82+ if header_pair : # Skip empty header pairs
83+ try :
84+ key , value = header_pair .split (":" , 1 )
85+ headers_dict [key .strip ()] = value .strip ()
86+ except ValueError :
87+ app_logger .warning (
88+ "Ignored invalid header pair" , {"header_pair" : header_pair }
89+ )
90+ return headers_dict
91+
92+
7493class File :
7594 def __init__ (self , name , data , mime = "text/plain" ):
7695 self .name = name
@@ -109,14 +128,14 @@ def __init__(
109128 self ,
110129 url : str ,
111130 token : str ,
112- log_level = "info" ,
131+ log_level : str = "info" ,
113132 ssl_verify : Union [bool , str ] = False ,
114133 proxies : Union [Dict [str , str ], None ] = None ,
115- json_logging = False ,
116- bundle_send_to_queue = True ,
134+ json_logging : bool = False ,
135+ bundle_send_to_queue : bool = True ,
117136 cert : Union [str , Tuple [str , str ], None ] = None ,
118- auth = None ,
119- perform_health_check = True ,
137+ custom_headers : str = None ,
138+ perform_health_check : bool = True ,
120139 ):
121140 """Constructor method"""
122141
@@ -138,17 +157,10 @@ def __init__(
138157 # Define API
139158 self .api_token = token
140159 self .api_url = url + "/graphql"
141- self .request_headers = {
142- "User-Agent" : "pycti/" + __version__ ,
143- "Authorization" : "Bearer " + token ,
144- }
145-
146- if auth is not None :
147- self .session = requests .session ()
148- self .session .auth = auth
149- else :
150- self .session = requests .session ()
151-
160+ self .request_headers = build_request_headers (
161+ token , custom_headers , self .app_logger
162+ )
163+ self .session = requests .session ()
152164 # Define the dependencies
153165 self .work = OpenCTIApiWork (self )
154166 self .playbook = OpenCTIApiPlaybook (self )
0 commit comments