1212import codecs
1313import json
1414
15- from .exceptions import QuickbooksException , SevereException , AuthorizationException
15+ from . import exceptions
1616import base64
1717import hashlib
1818import hmac
@@ -221,17 +221,17 @@ def make_request(self, request_type, url, request_body=None, content_type='appli
221221 req = self .process_request (request_type , url , headers = headers , params = params , data = request_body )
222222
223223 if req .status_code == httplib .UNAUTHORIZED :
224- raise AuthorizationException ("Application authentication failed" , detail = req .text )
224+ raise exceptions . AuthorizationException ("Application authentication failed" , detail = req .text )
225225
226226 try :
227227 result = req .json ()
228228 except :
229- raise QuickbooksException ("Error reading json response: {0}" .format (req .text ), 10000 )
229+ raise exceptions . QuickbooksException ("Error reading json response: {0}" .format (req .text ), 10000 )
230230
231231 if "Fault" in result :
232232 self .handle_exceptions (result ["Fault" ])
233233 elif not req .status_code == httplib .OK :
234- raise QuickbooksException ("Error returned with status code '{0}': {1}" .format (
234+ raise exceptions . QuickbooksException ("Error returned with status code '{0}': {1}" .format (
235235 req .status_code , req .text ), 10000 )
236236 else :
237237 return result
@@ -244,7 +244,7 @@ def post(self, *args, **kwargs):
244244
245245 def process_request (self , request_type , url , headers = "" , params = "" , data = "" ):
246246 if self .session_manager is None :
247- raise QuickbooksException ('No session manager' )
247+ raise exceptions . QuickbooksException ('No session manager' )
248248
249249 if self .session_manager .oauth_version == 2.0 :
250250 headers .update ({'Authorization' : 'Bearer ' + self .session_manager .access_token })
@@ -276,10 +276,20 @@ def handle_exceptions(self, results):
276276 if "code" in error :
277277 code = int (error ["code" ])
278278
279- if code >= 10000 :
280- raise SevereException (message , code , detail )
279+ if code > 0 and code <= 499 :
280+ raise exceptions .AuthorizationException (message , code , detail )
281+ elif code >= 500 and code <= 599 :
282+ raise exceptions .UnsupportedException (message , code , detail )
283+ elif code >= 600 and code <= 1999 :
284+ if code == 610 :
285+ raise exceptions .ObjectNotFoundException (message , code , detail )
286+ raise exceptions .GeneralException (message , code , detail )
287+ elif code >= 2000 and code <= 4999 :
288+ raise exceptions .ValidationException (message , code , detail )
289+ elif code >= 10000 :
290+ raise exceptions .SevereException (message , code , detail )
281291 else :
282- raise QuickbooksException (message , code , detail )
292+ raise exceptions . QuickbooksException (message , code , detail )
283293
284294 def create_object (self , qbbo , request_body , _file_path = None ):
285295 self .isvalid_object_name (qbbo )
@@ -327,7 +337,7 @@ def misc_operation(self, end_point, request_body):
327337
328338 def download_pdf (self , qbbo , item_id ):
329339 if self .session_manager is None :
330- raise QuickbooksException ('No session manager' )
340+ raise exceptions . QuickbooksException ('No session manager' )
331341
332342 url = "{0}/company/{1}/{2}/{3}/pdf" .format (
333343 self .api_url , self .company_id , qbbo .lower (), item_id )
@@ -349,7 +359,7 @@ def download_pdf(self, qbbo, item_id):
349359 try :
350360 result = response .json ()
351361 except :
352- raise QuickbooksException ("Error reading json response: {0}" .format (response .text ), 10000 )
362+ raise exceptions . QuickbooksException ("Error reading json response: {0}" .format (response .text ), 10000 )
353363
354364 self .handle_exceptions (result ["Fault" ])
355365 else :
0 commit comments