From d714ebcd5d13f3fec63a10a3236cf08e61fc4664 Mon Sep 17 00:00:00 2001 From: Cliff Hill Date: Thu, 4 Jan 2024 09:00:41 -0500 Subject: [PATCH] Restructured how clients are implemented. Signed-off-by: Cliff Hill --- app/clients/__init__.py | 5 ++++- .../performance_platform_client.py | 2 +- app/clients/sms/__init__.py | 15 ++++++++------- app/clients/sms/aws_sns.py | 3 --- tests/app/clients/test_sms.py | 6 ++++++ 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/clients/__init__.py b/app/clients/__init__.py index 7ab453318..1946f70e6 100644 --- a/app/clients/__init__.py +++ b/app/clients/__init__.py @@ -1,3 +1,4 @@ +from abc import abstractmethod from typing import Protocol from botocore.config import Config @@ -29,7 +30,9 @@ class Client(Protocol): Base client for sending notifications. """ - pass + @abstractmethod + def init_app(self, current_app, *args, **kwargs): + raise NotImplementedError("TODO: Need to implement.") class NotificationProviderClients(object): diff --git a/app/clients/performance_platform/performance_platform_client.py b/app/clients/performance_platform/performance_platform_client.py index 7e3d8c5be..ec0f6b999 100644 --- a/app/clients/performance_platform/performance_platform_client.py +++ b/app/clients/performance_platform/performance_platform_client.py @@ -10,7 +10,7 @@ class PerformancePlatformClient: def active(self): return self._active - def init_app(self, app): + def init_app(self, app, *args, **kwargs): self._active = app.config.get("PERFORMANCE_PLATFORM_ENABLED") if self.active: self.performance_platform_url = app.config.get("PERFORMANCE_PLATFORM_URL") diff --git a/app/clients/sms/__init__.py b/app/clients/sms/__init__.py index cd4ca57a7..97639e970 100644 --- a/app/clients/sms/__init__.py +++ b/app/clients/sms/__init__.py @@ -1,4 +1,5 @@ -from abc import abstractmethod +from abc import abstractmethod, abstractproperty +from typing import final from app.clients import Client, ClientException @@ -20,14 +21,14 @@ class SmsClient(Client): Base Sms client for sending smss. """ - @abstractmethod - def init_app(self, *args, **kwargs): - raise NotImplementedError("TODO Need to implement.") - @abstractmethod def send_sms(self, *args, **kwargs): raise NotImplementedError("TODO Need to implement.") - @abstractmethod - def get_name(self): + @abstractproperty + def name(self): raise NotImplementedError("TODO Need to implement.") + + @final + def get_name(self): + return self.name diff --git a/app/clients/sms/aws_sns.py b/app/clients/sms/aws_sns.py index 1061ec9ce..d75122a7e 100644 --- a/app/clients/sms/aws_sns.py +++ b/app/clients/sms/aws_sns.py @@ -43,9 +43,6 @@ class AwsSnsClient(SmsClient): def name(self): return "sns" - def get_name(self): - return self.name - def _valid_sender_number(self, sender): return sender and re.match(self._valid_sender_regex, sender) diff --git a/tests/app/clients/test_sms.py b/tests/app/clients/test_sms.py index 5718cbc81..f2a5abfed 100644 --- a/tests/app/clients/test_sms.py +++ b/tests/app/clients/test_sms.py @@ -10,6 +10,12 @@ def fake_client(notify_api): def name(self): return "fake" + def init_app(self, current_app, *args, **kwargs): + pass + + def send_sms(self, *args, **kwargs): + pass + fake_client = FakeSmsClient() # fake_client.init_app(notify_api) return fake_client