From 237d64b4c54e801fc69d553a247abf1b9b607ff3 Mon Sep 17 00:00:00 2001 From: Marie PUPO JEAMMET Date: Fri, 6 Sep 2024 17:18:27 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(dimail)=20refacto=20to=20bet?= =?UTF-8?q?ter=20handle=20500=20errors=20from=20dimail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit simple refacto to catch all 500 errors, including when asking for new token. --- src/backend/mailbox_manager/utils/dimail.py | 27 +++++++++++---------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/backend/mailbox_manager/utils/dimail.py b/src/backend/mailbox_manager/utils/dimail.py index f2f4359..3aaa595 100644 --- a/src/backend/mailbox_manager/utils/dimail.py +++ b/src/backend/mailbox_manager/utils/dimail.py @@ -41,6 +41,11 @@ class DimailAPIClient: 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: logger.error( "[DIMAIL] 403 Forbidden: please check the mail domain secret of %s", @@ -48,11 +53,7 @@ class DimailAPIClient: ) raise exceptions.PermissionDenied - if "access_token" in response.json(): - headers["Authorization"] = f"Bearer {response.json()['access_token']}" - logger.info("Token succesfully granted by mail-provisioning API.") - - return headers + return self.pass_dimail_unexpected_response(response) def send_mailbox_request(self, mailbox): """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}" ) - # All other errors are considered 'unexpected' - logger.error( - "Unexpected response: %s", - response.content.decode("utf-8"), - ) - raise SystemError( - f"Unexpected response from dimail: {response.content.decode('utf-8')}" - ) + return self.pass_dimail_unexpected_response(response) + + def pass_dimail_unexpected_response(self, response): + """Raise error when encountering an unexpected error in dimail.""" + error_content = response.content.decode("utf-8") + + logger.error("[DIMAIL] unexpected error : %s", error_content) + raise SystemError(f"Unexpected response from dimail: {error_content}")