|
1 | 1 | import base64 |
2 | 2 | import mimetypes |
3 | 3 | import requests |
| 4 | +from microsoftgraph import exceptions |
4 | 5 | from urllib.parse import urlencode, urlparse |
5 | 6 |
|
6 | 7 |
|
@@ -373,6 +374,56 @@ def _request(self, method, url, headers=None, **kwargs): |
373 | 374 | return self._parse(requests.request(method, url, headers=_headers, **kwargs)) |
374 | 375 |
|
375 | 376 | def _parse(self, response): |
| 377 | + status_code = response.status_code |
376 | 378 | 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) |
0 commit comments