12
12
class EMApi (object ):
13
13
"""Defines all api calls and treats them like an object to give proper interfacing"""
14
14
15
- def __init__ (self , server = None , user = None , password = None , retries = 5 ):
15
+ def __init__ (self , server = None , user = None , password = None , retries = 5 , default_headers = {} ):
16
16
""" Initialise new API object """
17
17
self .server = server
18
18
self .user = user
19
19
self .password = password
20
20
self .retries = retries
21
+ self .default_headers = {'Accept' : 'application/json' , 'Content-Type' : 'application/json' }
22
+ self .default_headers .update (default_headers )
21
23
self .token = None
24
+
22
25
# Sanitise input
23
26
if server is None or user is None or password is None :
24
27
raise ValueError ('EMApi(server=SERVERNAME, user=USERNAME, password=PASSWORD, [retries=N])' )
@@ -39,8 +42,7 @@ def _api_auth(self):
39
42
retries = 0
40
43
while no_token and retries < self .retries :
41
44
em_token_url = '%s/api/v1/token' % base_url
42
- headers = {'Accept' : 'application/json' , 'Content-Type' : 'application/json' }
43
- em_token = requests .post (em_token_url , data = json_encode (token_payload ), headers = headers , timeout = 5 , verify = False )
45
+ em_token = requests .post (em_token_url , data = json_encode (token_payload ), headers = self .default_headers , timeout = 5 , verify = False )
44
46
if int (str (em_token .status_code )[:1 ]) == 2 :
45
47
token = em_token .text
46
48
no_token = False
@@ -74,10 +76,10 @@ def query(self, query_endpoint=None, data=None, headers={}, query_type='get', re
74
76
base_url = 'https://%s' % self .server
75
77
request_url = '%s%s' % (base_url , query_endpoint )
76
78
log .debug ('Calling URL %s' % request_url )
77
- query_headers = {'Accept' : 'application/json' , 'Content-Type' : 'application/json' , 'Authorization' : token }
79
+ query_headers = self .default_headers .copy ()
80
+ query_headers .update ({'Authorization' : token })
78
81
if isinstance (headers , dict ):
79
- for header in headers :
80
- query_headers .update (header )
82
+ query_headers .update (headers )
81
83
82
84
request_values = {'url' :request_url , 'headers' :query_headers , 'timeout' :30 , 'verify' :False }
83
85
if data is not None :
0 commit comments