@@ -152,7 +152,7 @@ def change_data_capture(self, entity_string, changed_since):
152152 return result
153153
154154 def make_request (self , request_type , url , request_body = None , content_type = 'application/json' ,
155- params = None , file_path = None , request_id = None ):
155+ params = None , file_path = None , file_bytes = None , request_id = None ):
156156
157157 if not params :
158158 params = {}
@@ -172,7 +172,7 @@ def make_request(self, request_type, url, request_body=None, content_type='appli
172172 'User-Agent' : 'python-quickbooks V3 library'
173173 }
174174
175- if file_path :
175+ if file_path or file_bytes :
176176 url = url .replace ('attachable' , 'upload' )
177177 boundary = '-------------PythonMultipartPost'
178178 headers .update ({
@@ -183,8 +183,11 @@ def make_request(self, request_type, url, request_body=None, content_type='appli
183183 'Connection' : 'close'
184184 })
185185
186- with open (file_path , 'rb' ) as attachment :
187- binary_data = str (base64 .b64encode (attachment .read ()).decode ('ascii' ))
186+ if file_path :
187+ with open (file_path , 'rb' ) as attachment :
188+ binary_data = str (base64 .b64encode (attachment .read ()).decode ('ascii' ))
189+ else :
190+ binary_data = str (base64 .b64encode (file_bytes ).decode ('ascii' ))
188191
189192 content_type = json .loads (request_body )['ContentType' ]
190193
@@ -287,11 +290,11 @@ def handle_exceptions(results):
287290 else :
288291 raise exceptions .QuickbooksException (message , code , detail )
289292
290- def create_object (self , qbbo , request_body , _file_path = None , request_id = None , params = None ):
293+ def create_object (self , qbbo , request_body , _file_path = None , _file_bytes = None , request_id = None , params = None ):
291294 self .isvalid_object_name (qbbo )
292295
293296 url = "{0}/company/{1}/{2}" .format (self .api_url , self .company_id , qbbo .lower ())
294- results = self .post (url , request_body , file_path = _file_path , request_id = request_id , params = params )
297+ results = self .post (url , request_body , file_path = _file_path , file_bytes = _file_bytes , request_id = request_id , params = params )
295298
296299 return results
297300
@@ -307,9 +310,9 @@ def isvalid_object_name(self, object_name):
307310
308311 return True
309312
310- def update_object (self , qbbo , request_body , _file_path = None , request_id = None , params = None ):
313+ def update_object (self , qbbo , request_body , _file_path = None , _file_bytes = None , request_id = None , params = None ):
311314 url = "{0}/company/{1}/{2}" .format (self .api_url , self .company_id , qbbo .lower ())
312- result = self .post (url , request_body , file_path = _file_path , request_id = request_id , params = params )
315+ result = self .post (url , request_body , file_path = _file_path , file_bytes = _file_bytes , request_id = request_id , params = params )
313316
314317 return result
315318
0 commit comments