diff --git a/sp_api/base/client.py b/sp_api/base/client.py index 8ad32741d..b72ff1558 100644 --- a/sp_api/base/client.py +++ b/sp_api/base/client.py @@ -118,7 +118,7 @@ def _check_response(res) -> ApiResponse: error = res.json().get('errors', None) if error: exception = get_exception_for_code(res.status_code) - raise exception(error) + raise exception(error, headers=res.headers) return ApiResponse(**res.json(), headers=res.headers) def _add_marketplaces(self, data): diff --git a/sp_api/base/exceptions.py b/sp_api/base/exceptions.py index 578fc4520..83900c0d5 100644 --- a/sp_api/base/exceptions.py +++ b/sp_api/base/exceptions.py @@ -11,13 +11,14 @@ class SellingApiException(Exception): """ code = 999 - def __init__(self, error): + def __init__(self, error, headers): try: self.message = error[0].get('message') self.amzn_code = error[0].get('code') except IndexError: pass self.error = error + self.headers = headers class SellingApiBadRequestException(SellingApiException): @@ -26,8 +27,8 @@ class SellingApiBadRequestException(SellingApiException): """ code = 400 - def __init__(self, error): - super(SellingApiBadRequestException, self).__init__(error) + def __init__(self, error, headers=None): + super(SellingApiBadRequestException, self).__init__(error, headers) class SellingApiForbiddenException(SellingApiException): @@ -36,8 +37,8 @@ class SellingApiForbiddenException(SellingApiException): """ code = 403 - def __init__(self, error): - super(SellingApiForbiddenException, self).__init__(error) + def __init__(self, error, headers=None): + super(SellingApiForbiddenException, self).__init__(error, headers) class SellingApiNotFoundException(SellingApiException): @@ -46,8 +47,8 @@ class SellingApiNotFoundException(SellingApiException): """ code = 404 - def __init__(self, error): - super(SellingApiNotFoundException, self).__init__(error) + def __init__(self, error, headers=None): + super(SellingApiNotFoundException, self).__init__(error, headers) class SellingApiRequestThrottledException(SellingApiException): @@ -56,8 +57,8 @@ class SellingApiRequestThrottledException(SellingApiException): """ code = 429 - def __init__(self, error): - super(SellingApiRequestThrottledException, self).__init__(error) + def __init__(self, error, headers=None): + super(SellingApiRequestThrottledException, self).__init__(error, headers) class SellingApiServerException(SellingApiException): @@ -66,8 +67,8 @@ class SellingApiServerException(SellingApiException): """ code = 500 - def __init__(self, error): - super(SellingApiServerException, self).__init__(error) + def __init__(self, error, headers=None): + super(SellingApiServerException, self).__init__(error, headers) class SellingApiTemporarilyUnavailableException(SellingApiException): @@ -76,8 +77,8 @@ class SellingApiTemporarilyUnavailableException(SellingApiException): """ code = 503 - def __init__(self, error): - super(SellingApiTemporarilyUnavailableException, self).__init__(error) + def __init__(self, error, headers=None): + super(SellingApiTemporarilyUnavailableException, self).__init__(error, headers) def get_exception_for_code(code: int):