88import textwrap
99import json
1010
11- from .exceptions import QuickbooksException , SevereException , AuthorizationException
11+ from . import exceptions
1212import base64
1313
1414try :
@@ -201,24 +201,24 @@ def make_request(self, request_type, url, request_body=None, content_type='appli
201201 req = self .process_request (request_type , url , headers = headers , params = params , data = request_body )
202202
203203 if req .status_code == httplib .UNAUTHORIZED :
204- raise AuthorizationException ("Application authentication failed" , detail = req .text )
204+ raise exceptions . AuthorizationException ("Application authentication failed" , detail = req .text )
205205
206206 try :
207207 result = req .json ()
208208 except :
209- raise QuickbooksException ("Error reading json response: {0}" .format (req .text ), 10000 )
209+ raise exceptions . QuickbooksException ("Error reading json response: {0}" .format (req .text ), 10000 )
210210
211211 if "Fault" in result :
212212 self .handle_exceptions (result ["Fault" ])
213213 elif not req .status_code == httplib .OK :
214- raise QuickbooksException ("Error returned with status code '{0}': {1}" .format (
214+ raise exceptions . QuickbooksException ("Error returned with status code '{0}': {1}" .format (
215215 req .status_code , req .text ), 10000 )
216216 else :
217217 return result
218218
219219 def process_request (self , request_type , url , headers = "" , params = "" , data = "" ):
220220 if self .session_manager is None :
221- raise QuickbooksException ('No session manager' )
221+ raise exceptions . QuickbooksException ('No session manager' )
222222
223223 if self .session_manager .oauth_version == 2.0 :
224224 headers .update ({'Authorization' : 'Bearer ' + self .session_manager .access_token })
@@ -250,10 +250,20 @@ def handle_exceptions(self, results):
250250 if "code" in error :
251251 code = int (error ["code" ])
252252
253- if code >= 10000 :
254- raise SevereException (message , code , detail )
253+ if code > 0 and code <= 499 :
254+ raise exceptions .AuthorizationException (message , code , detail )
255+ elif code >= 500 and code <= 599 :
256+ raise exceptions .UnsupportedException (message , code , detail )
257+ elif code >= 600 and code <= 1999 :
258+ if code == 610 :
259+ raise exceptions .NotFoundException (message , code , detail )
260+ raise exceptions .GeneralException (message , code , detail )
261+ elif code >= 2000 and code <= 4999 :
262+ raise exceptions .ValidationException (message , code , detail )
263+ elif code >= 10000 :
264+ raise exceptions .SevereException (message , code , detail )
255265 else :
256- raise QuickbooksException (message , code , detail )
266+ raise exceptions . QuickbooksException (message , code , detail )
257267
258268 def create_object (self , qbbo , request_body , _file_path = None ):
259269 self .isvalid_object_name (qbbo )
@@ -301,7 +311,7 @@ def misc_operation(self, end_point, request_body):
301311
302312 def download_pdf (self , qbbo , item_id ):
303313 if self .session_manager is None :
304- raise QuickbooksException ('No session manager' )
314+ raise exceptions . QuickbooksException ('No session manager' )
305315
306316 url = self .api_url + "/company/{0}/{1}/{2}/pdf" .format (
307317 self .company_id , qbbo .lower (), item_id )
@@ -318,7 +328,7 @@ def download_pdf(self, qbbo, item_id):
318328 try :
319329 result = response .json ()
320330 except :
321- raise QuickbooksException ("Error reading json response: {0}" .format (response .text ), 10000 )
331+ raise exceptions . QuickbooksException ("Error reading json response: {0}" .format (response .text ), 10000 )
322332
323333 self .handle_exceptions (result ["Fault" ])
324334 else :
0 commit comments