Files
notifications-api/app/clients/email/__init__.py

39 lines
1.1 KiB
Python
Raw Normal View History

from abc import abstractmethod, abstractproperty
2021-03-10 13:55:06 +00:00
from app.clients import Client, ClientException
class EmailClientException(ClientException):
2023-08-29 14:54:30 -07:00
"""
Base Exception for EmailClients
2023-08-29 14:54:30 -07:00
"""
pass
class EmailClientNonRetryableException(ClientException):
2023-08-29 14:54:30 -07:00
"""
Represents an error returned from the email client API with a 4xx response code
that should not be retried and should instead be marked as technical failure.
An example of this would be an email address that makes it through our
validation rules but is rejected by SES. There is no point in retrying this type as
it will always fail however many calls to SES. Whereas a throttling error would not
use this exception as it may succeed if we retry
2023-08-29 14:54:30 -07:00
"""
pass
class EmailClient(Client):
2023-08-29 14:54:30 -07:00
"""
Base Email client for sending emails.
2023-08-29 14:54:30 -07:00
"""
@abstractmethod
def send_email(self, *args, **kwargs):
2023-08-29 14:54:30 -07:00
raise NotImplementedError("TODO Need to implement.")
@abstractproperty
def name(self):
2023-08-29 14:54:30 -07:00
raise NotImplementedError("TODO Need to implement.")