♻️(dimail) refacto to better handle 500 errors from dimail
simple refacto to catch all 500 errors, including when asking for new token.
This commit is contained in:
committed by
Marie
parent
0d157d3f2b
commit
237d64b4c5
@@ -41,6 +41,11 @@ class DimailAPIClient:
|
|||||||
timeout=20,
|
timeout=20,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if response.status_code == status.HTTP_200_OK:
|
||||||
|
headers["Authorization"] = f"Bearer {response.json()['access_token']}"
|
||||||
|
logger.info("Token succesfully granted by mail-provisioning API.")
|
||||||
|
return headers
|
||||||
|
|
||||||
if response.status_code == status.HTTP_403_FORBIDDEN:
|
if response.status_code == status.HTTP_403_FORBIDDEN:
|
||||||
logger.error(
|
logger.error(
|
||||||
"[DIMAIL] 403 Forbidden: please check the mail domain secret of %s",
|
"[DIMAIL] 403 Forbidden: please check the mail domain secret of %s",
|
||||||
@@ -48,11 +53,7 @@ class DimailAPIClient:
|
|||||||
)
|
)
|
||||||
raise exceptions.PermissionDenied
|
raise exceptions.PermissionDenied
|
||||||
|
|
||||||
if "access_token" in response.json():
|
return self.pass_dimail_unexpected_response(response)
|
||||||
headers["Authorization"] = f"Bearer {response.json()['access_token']}"
|
|
||||||
logger.info("Token succesfully granted by mail-provisioning API.")
|
|
||||||
|
|
||||||
return headers
|
|
||||||
|
|
||||||
def send_mailbox_request(self, mailbox):
|
def send_mailbox_request(self, mailbox):
|
||||||
"""Send a CREATE mailbox request to mail provisioning API."""
|
"""Send a CREATE mailbox request to mail provisioning API."""
|
||||||
@@ -100,11 +101,11 @@ class DimailAPIClient:
|
|||||||
f"Secret not valid for this domain {mailbox.domain.name}"
|
f"Secret not valid for this domain {mailbox.domain.name}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# All other errors are considered 'unexpected'
|
return self.pass_dimail_unexpected_response(response)
|
||||||
logger.error(
|
|
||||||
"Unexpected response: %s",
|
def pass_dimail_unexpected_response(self, response):
|
||||||
response.content.decode("utf-8"),
|
"""Raise error when encountering an unexpected error in dimail."""
|
||||||
)
|
error_content = response.content.decode("utf-8")
|
||||||
raise SystemError(
|
|
||||||
f"Unexpected response from dimail: {response.content.decode('utf-8')}"
|
logger.error("[DIMAIL] unexpected error : %s", error_content)
|
||||||
)
|
raise SystemError(f"Unexpected response from dimail: {error_content}")
|
||||||
|
|||||||
Reference in New Issue
Block a user