Skip to content

Commit 3a7dcba

Browse files
committed
Exceptions
1 parent 5245946 commit 3a7dcba

File tree

2 files changed

+143
-2
lines changed

2 files changed

+143
-2
lines changed

microsoftgraph/client.py

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import base64
22
import mimetypes
33
import requests
4+
from microsoftgraph import exceptions
45
from urllib.parse import urlencode, urlparse
56

67

@@ -373,6 +374,56 @@ def _request(self, method, url, headers=None, **kwargs):
373374
return self._parse(requests.request(method, url, headers=_headers, **kwargs))
374375

375376
def _parse(self, response):
377+
status_code = response.status_code
376378
if 'application/json' in response.headers['Content-Type']:
377-
return response.json()
378-
return response.text
379+
r = response.json()
380+
else:
381+
r = response.text
382+
if status_code == 200 or status_code == 201:
383+
return r
384+
elif status_code == 204:
385+
return None
386+
elif status_code == 400:
387+
raise exceptions.BadRequest(r)
388+
elif status_code == 401:
389+
raise exceptions.Unauthorized(r)
390+
elif status_code == 403:
391+
raise exceptions.Forbidden(r)
392+
elif status_code == 404:
393+
raise exceptions.NotFound(r)
394+
elif status_code == 405:
395+
raise exceptions.MethodNotAllowed(r)
396+
elif status_code == 406:
397+
raise exceptions.NotAcceptable(r)
398+
elif status_code == 409:
399+
raise exceptions.Conflict(r)
400+
elif status_code == 410:
401+
raise exceptions.Gone(r)
402+
elif status_code == 411:
403+
raise exceptions.LengthRequired(r)
404+
elif status_code == 412:
405+
raise exceptions.PreconditionFailed(r)
406+
elif status_code == 413:
407+
raise exceptions.RequestEntityTooLarge(r)
408+
elif status_code == 415:
409+
raise exceptions.UnsupportedMediaType(r)
410+
elif status_code == 416:
411+
raise exceptions.RequestedRangeNotSatisfiable(r)
412+
elif status_code == 422:
413+
raise exceptions.UnprocessableEntity(r)
414+
elif status_code == 429:
415+
raise exceptions.TooManyRequests(r)
416+
elif status_code == 500:
417+
raise exceptions.InternalServerError(r)
418+
elif status_code == 501:
419+
raise exceptions.NotImplemented(r)
420+
elif status_code == 503:
421+
raise exceptions.ServiceUnavailable(r)
422+
elif status_code == 504:
423+
raise exceptions.GatewayTimeout(r)
424+
elif status_code == 507:
425+
raise exceptions.InsufficientStorage(r)
426+
elif status_code == 509:
427+
raise exceptions.BandwidthLimitExceeded(r)
428+
else:
429+
raise exceptions.UnknownError(r)

microsoftgraph/exceptions.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
class BaseError(Exception):
2+
pass
3+
4+
5+
class UnknownError(BaseError):
6+
pass
7+
8+
9+
class BadRequest(BaseError):
10+
pass
11+
12+
13+
class Unauthorized(BaseError):
14+
pass
15+
16+
17+
class Forbidden(BaseError):
18+
pass
19+
20+
21+
class NotFound(BaseError):
22+
pass
23+
24+
25+
class MethodNotAllowed(BaseError):
26+
pass
27+
28+
29+
class NotAcceptable(BaseError):
30+
pass
31+
32+
33+
class Conflict(BaseError):
34+
pass
35+
36+
37+
class Gone(BaseError):
38+
pass
39+
40+
41+
class LengthRequired(BaseError):
42+
pass
43+
44+
45+
class PreconditionFailed(BaseError):
46+
pass
47+
48+
49+
class RequestEntityTooLarge(BaseError):
50+
pass
51+
52+
53+
class UnsupportedMediaType(BaseError):
54+
pass
55+
56+
57+
class RequestedRangeNotSatisfiable(BaseError):
58+
pass
59+
60+
61+
class UnprocessableEntity(BaseError):
62+
pass
63+
64+
65+
class TooManyRequests(BaseError):
66+
pass
67+
68+
69+
class InternalServerError(BaseError):
70+
pass
71+
72+
73+
class NotImplemented(BaseError):
74+
pass
75+
76+
77+
class ServiceUnavailable(BaseError):
78+
pass
79+
80+
81+
class GatewayTimeout(BaseError):
82+
pass
83+
84+
85+
class InsufficientStorage(BaseError):
86+
pass
87+
88+
89+
class BandwidthLimitExceeded(BaseError):
90+
pass

0 commit comments

Comments
 (0)