@@ -157,7 +157,7 @@ def change_data_capture(self, entity_string, changed_since):
157157 return result
158158
159159 def make_request (self , request_type , url , request_body = None , content_type = 'application/json' ,
160- params = None , file_path = None , request_id = None ):
160+ params = None , file_path = None , file_bytes = None , request_id = None ):
161161
162162 if not params :
163163 params = {}
@@ -176,7 +176,7 @@ def make_request(self, request_type, url, request_body=None, content_type='appli
176176 'User-Agent' : 'python-quickbooks V3 library'
177177 }
178178
179- if file_path :
179+ if file_path or file_bytes :
180180 url = url .replace ('attachable' , 'upload' )
181181 boundary = '-------------PythonMultipartPost'
182182 headers .update ({
@@ -187,8 +187,11 @@ def make_request(self, request_type, url, request_body=None, content_type='appli
187187 'Connection' : 'close'
188188 })
189189
190- with open (file_path , 'rb' ) as attachment :
191- binary_data = str (base64 .b64encode (attachment .read ()).decode ('ascii' ))
190+ if file_path :
191+ with open (file_path , 'rb' ) as attachment :
192+ binary_data = str (base64 .b64encode (attachment .read ()).decode ('ascii' ))
193+ else :
194+ binary_data = str (base64 .b64encode (file_bytes ).decode ('ascii' ))
192195
193196 content_type = json .loads (request_body )['ContentType' ]
194197
@@ -260,9 +263,10 @@ def process_request(self, request_type, url, headers="", params="", data=""):
260263 request_type , url , headers = headers , params = params , data = data )
261264
262265 def get_single_object (self , qbbo , pk , params = None ):
263- url = "{0}/company/{1}/{2}/{3}/ " .format (self .api_url , self .company_id , qbbo .lower (), pk )
266+ url = "{0}/company/{1}/{2}/{3}" .format (self .api_url , self .company_id , qbbo .lower (), pk )
264267 if params is None :
265268 params = {}
269+
266270 return self .get (url , {}, params = params )
267271
268272 @staticmethod
@@ -299,11 +303,11 @@ def handle_exceptions(results):
299303 else :
300304 raise exceptions .QuickbooksException (message , code , detail )
301305
302- def create_object (self , qbbo , request_body , _file_path = None , request_id = None , params = None ):
306+ def create_object (self , qbbo , request_body , _file_path = None , _file_bytes = None , request_id = None , params = None ):
303307 self .isvalid_object_name (qbbo )
304308
305309 url = "{0}/company/{1}/{2}" .format (self .api_url , self .company_id , qbbo .lower ())
306- results = self .post (url , request_body , file_path = _file_path , request_id = request_id , params = params )
310+ results = self .post (url , request_body , file_path = _file_path , file_bytes = _file_bytes , request_id = request_id , params = params )
307311
308312 return results
309313
@@ -319,11 +323,14 @@ def isvalid_object_name(self, object_name):
319323
320324 return True
321325
322- def update_object (self , qbbo , request_body , _file_path = None , request_id = None , params = None ):
326+ def update_object (self , qbbo , request_body , _file_path = None , _file_bytes = None , request_id = None , params = None ):
323327 url = "{0}/company/{1}/{2}" .format (self .api_url , self .company_id , qbbo .lower ())
324328 if params is None :
325329 params = {}
326- return self .post (url , request_body , file_path = _file_path , request_id = request_id , params = params )
330+
331+ result = self .post (url , request_body , file_path = _file_path , file_bytes = _file_bytes , request_id = request_id , params = params )
332+
333+ return result
327334
328335 def delete_object (self , qbbo , request_body , _file_path = None , request_id = None ):
329336 url = "{0}/company/{1}/{2}" .format (self .api_url , self .company_id , qbbo .lower ())
0 commit comments