@@ -75,67 +75,75 @@ def __init__(self, access_key_id: str, access_key_secret: str, server_url: str =
7575 self .sdk_name : str = 'lara-python'
7676 self .sdk_version : str = __import__ ('lara_sdk' ).__version__
7777
78- def get (self , path : str , params : Dict = None ) -> Optional [Union [Dict , List ]]:
78+ def get (self , path : str , params : Dict = None , headers : Dict = None ) -> Optional [Union [Dict , List ]]:
7979 """
8080 Sends a GET request to the Lara API.
8181 :param path: The path to send the request to.
8282 :param params: The parameters to send with the request.
83+ :param headers: Additional headers to include in the request.
8384 :return: The JSON response from the API.
8485 """
85- return self ._request ('GET' , path , body = params )
86+ return self ._request ('GET' , path , body = params , headers = headers )
8687
87- def delete (self , path : str , params : Dict = None ) -> Optional [Union [Dict , List ]]:
88+ def delete (self , path : str , params : Dict = None , headers : Dict = None ) -> Optional [Union [Dict , List ]]:
8889 """
8990 Sends a DELETE request to the Lara API.
9091 :param path: The path to send the request to.
9192 :param params: The parameters to send with the request.
93+ :param headers: Additional headers to include in the request.
9294 :return: The JSON response from the API.
9395 """
94- return self ._request ('DELETE' , path , body = params )
96+ return self ._request ('DELETE' , path , body = params , headers = headers )
9597
96- def post (self , path : str , body : Dict = None , files : Dict = None ) -> Optional [Union [Dict , List ]]:
98+ def post (self , path : str , body : Dict = None , files : Dict = None , headers : Dict = None ) -> Optional [Union [Dict , List ]]:
9799 """
98100 Sends a POST request to the Lara API.
99101 :param path: The path to send the request to.
100102 :param body: The parameters to send with the request.
101103 :param files: The files to send with the request. If present, request will be sent as multipart/form-data.
104+ :param headers: Additional headers to include in the request.
102105 :return: The JSON response from the API.
103106 """
104- return self ._request ('POST' , path , body , files )
107+ return self ._request ('POST' , path , body , files , headers )
105108
106- def put (self , path : str , body : Dict = None , files : Dict = None ) -> Optional [Union [Dict , List ]]:
109+ def put (self , path : str , body : Dict = None , files : Dict = None , headers : Dict = None ) -> Optional [Union [Dict , List ]]:
107110 """
108111 Sends a PUT request to the Lara API.
109112 :param path: The path to send the request to.
110113 :param body: The parameters to send with the request.
111114 :param files: The files to send with the request. If present, request will be sent as multipart/form-data.
115+ :param headers: Additional headers to include in the request.
112116 :return: The JSON response from the API.
113117 """
114- return self ._request ('PUT' , path , body , files )
118+ return self ._request ('PUT' , path , body , files , headers )
115119
116- def _request (self , method : str , path : str , body : Dict = None , files : Dict = None ) -> Optional [Union [Dict , List ]]:
120+ def _request (self , method : str , path : str , body : Dict = None , files : Dict = None , headers : Dict = None ) -> Optional [Union [Dict , List ]]:
117121 if not path .startswith ('/' ):
118122 path = '/' + path
119123
120- headers = {
124+ _headers = {
121125 'X-HTTP-Method-Override' : method ,
122126 'Date' : datetime .datetime .now (datetime .timezone .utc ).strftime ('%a, %d %b %Y %H:%M:%S +0000' ),
123127 'X-Lara-SDK-Name' : self .sdk_name ,
124128 'X-Lara-SDK-Version' : self .sdk_version
125129 }
126130
131+ # headers
132+ if headers is not None :
133+ _headers .update (headers )
134+
127135 if body is not None :
128136 body = {k : v for k , v in body .items () if v is not None }
129137
130138 if len (body ) > 0 :
131139 encoded_body = json .dumps (body , ensure_ascii = False , separators = (',' , ':' )).encode ('UTF-8' )
132- headers ['Content-MD5' ] = hashlib .md5 (encoded_body ).hexdigest ()
140+ _headers ['Content-MD5' ] = hashlib .md5 (encoded_body ).hexdigest ()
133141
134142 if files is not None :
135- response = self .session .request ('POST' , f'{ self .base_url } { path } ' , headers = headers , data = body , files = files )
143+ response = self .session .request ('POST' , f'{ self .base_url } { path } ' , headers = _headers , data = body , files = files )
136144 else :
137- response = self .session .request ('POST' , f'{ self .base_url } { path } ' , headers = headers , json = body )
145+ response = self .session .request ('POST' , f'{ self .base_url } { path } ' , headers = _headers , json = body )
138146
139147 if 200 <= response .status_code < 300 :
140148 return response .json ().get ('content' , None )
141- raise LaraApiError .from_response (response )
149+ raise LaraApiError .from_response (response )
0 commit comments