from botocore.config import Config AWS_CLIENT_CONFIG = Config( # This config is required to enable S3 to connect to FIPS-enabled # endpoints. See https://aws.amazon.com/compliance/fips/ for more # information. s3={ 'addressing_style': 'virtual', }, use_fips_endpoint=True ) STATISTICS_REQUESTED = 'requested' STATISTICS_DELIVERED = 'delivered' STATISTICS_FAILURE = 'failure' class ClientException(Exception): ''' Base Exceptions for sending notifications that fail ''' pass class Client(object): ''' Base client for sending notifications. ''' pass class NotificationProviderClients(object): sms_clients = {} email_clients = {} def init_app(self, sms_clients, email_clients): for client in sms_clients: self.sms_clients[client.name] = client for client in email_clients: self.email_clients[client.name] = client def get_sms_client(self, name): return self.sms_clients.get(name) def get_email_client(self, name): return self.email_clients.get(name) def get_client_by_name_and_type(self, name, notification_type): assert notification_type in ['email', 'sms'] # nosec B101 if notification_type == 'email': return self.get_email_client(name) if notification_type == 'sms': return self.get_sms_client(name)