♻️(dimail) separate headers request from mailbox request
I want to separate headers request form mailbox request, as we were previously catching the same errors twice. It should be clearer now.
This commit is contained in:
committed by
Marie
parent
864702d0ee
commit
00dafd4b15
@@ -29,17 +29,18 @@ class DimailAPIClient:
|
|||||||
"""A dimail-API client."""
|
"""A dimail-API client."""
|
||||||
|
|
||||||
API_URL = settings.MAIL_PROVISIONING_API_URL
|
API_URL = settings.MAIL_PROVISIONING_API_URL
|
||||||
|
API_CREDENTIALS = settings.MAIL_PROVISIONING_API_CREDENTIALS
|
||||||
|
|
||||||
def get_headers(self):
|
def get_headers(self):
|
||||||
"""Build header dict from domain object."""
|
"""
|
||||||
# self.secret is the encoded basic auth, to request a new token from dimail-api
|
Build headers dictionary. Requires MAIL_PROVISIONING_API_CREDENTIALS setting,
|
||||||
|
to get a token from dimail /token/ endpoint.
|
||||||
|
"""
|
||||||
headers = {"Content-Type": "application/json"}
|
headers = {"Content-Type": "application/json"}
|
||||||
|
|
||||||
response = requests.get(
|
response = requests.get(
|
||||||
f"{self.API_URL}/token/",
|
f"{self.API_URL}/token/",
|
||||||
headers={
|
headers={"Authorization": f"Basic {self.API_CREDENTIALS}"},
|
||||||
"Authorization": f"Basic {settings.MAIL_PROVISIONING_API_CREDENTIALS}"
|
|
||||||
},
|
|
||||||
timeout=20,
|
timeout=20,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -53,7 +54,9 @@ class DimailAPIClient:
|
|||||||
"[DIMAIL] 403 Forbidden: Could not retrieve a token,\
|
"[DIMAIL] 403 Forbidden: Could not retrieve a token,\
|
||||||
please check 'MAIL_PROVISIONING_API_CREDENTIALS' setting.",
|
please check 'MAIL_PROVISIONING_API_CREDENTIALS' setting.",
|
||||||
)
|
)
|
||||||
raise exceptions.PermissionDenied
|
raise exceptions.PermissionDenied(
|
||||||
|
"Token denied. Please check your MAIL_PROVISIONING_API_CREDENTIALS."
|
||||||
|
)
|
||||||
|
|
||||||
return self.pass_dimail_unexpected_response(response)
|
return self.pass_dimail_unexpected_response(response)
|
||||||
|
|
||||||
@@ -65,12 +68,13 @@ class DimailAPIClient:
|
|||||||
"surName": mailbox.last_name,
|
"surName": mailbox.last_name,
|
||||||
"displayName": f"{mailbox.first_name} {mailbox.last_name}",
|
"displayName": f"{mailbox.first_name} {mailbox.last_name}",
|
||||||
}
|
}
|
||||||
|
headers = self.get_headers()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = session.post(
|
response = session.post(
|
||||||
f"{self.API_URL}/domains/{mailbox.domain}/mailboxes/{mailbox.local_part}/",
|
f"{self.API_URL}/domains/{mailbox.domain}/mailboxes/{mailbox.local_part}/",
|
||||||
json=payload,
|
json=payload,
|
||||||
headers=self.get_headers(),
|
headers=headers,
|
||||||
verify=True,
|
verify=True,
|
||||||
timeout=10,
|
timeout=10,
|
||||||
)
|
)
|
||||||
@@ -81,10 +85,6 @@ class DimailAPIClient:
|
|||||||
exc_info=error,
|
exc_info=error,
|
||||||
)
|
)
|
||||||
raise error
|
raise error
|
||||||
except exceptions.PermissionDenied as error:
|
|
||||||
raise exceptions.PermissionDenied(
|
|
||||||
f"Token denied - Wrong secret on mail domain {mailbox.domain.name}"
|
|
||||||
) from error
|
|
||||||
|
|
||||||
if response.status_code == status.HTTP_201_CREATED:
|
if response.status_code == status.HTTP_201_CREATED:
|
||||||
extra = {"response": response.content.decode("utf-8")}
|
extra = {"response": response.content.decode("utf-8")}
|
||||||
|
|||||||
Reference in New Issue
Block a user