added predicates

This commit is contained in:
Simone Robutti 2021-05-02 10:46:58 +02:00
parent fb00516d6c
commit fabc1e7eff
2 changed files with 29 additions and 17 deletions

View File

@ -1,25 +1,22 @@
from typing import Iterable from typing import Iterable
from . import abstract from mobilizon_bots.publishers import abstract
from . import telegram
# WIP
# from . import twitter
def run(publishers: Iterable[abstract.AbstractPublisher]) -> dict: def run(publishers: Iterable[abstract.AbstractPublisher]) -> dict:
invalid_credentials, invalid_event = [], [] invalid_credentials, invalid_event = [], []
for p in publishers: for p in publishers:
if not p.validate_credentials(): if not p.are_credetials_valid():
invalid_credentials.append(p) invalid_credentials.append(p)
if not p.validate_event(): if not p.is_event_valid():
invalid_event.append(p) invalid_event.append(p)
if invalid_credentials or invalid_event: if invalid_credentials or invalid_event:
# TODO: consider to use exceptions or data class if necessary
return { return {
'status': 'fail', "status": "fail",
'description': "Validation failed for at least 1 publisher", "description": "Validation failed for at least 1 publisher",
'invalid_credentials': invalid_credentials, "invalid_credentials": invalid_credentials,
'invalid_event': invalid_event, "invalid_event": invalid_event,
} }
failed_publishers, successful_publishers = [], [] failed_publishers, successful_publishers = [], []
for p in publishers: for p in publishers:
@ -29,12 +26,12 @@ def run(publishers: Iterable[abstract.AbstractPublisher]) -> dict:
failed_publishers.append(p) failed_publishers.append(p)
if failed_publishers: if failed_publishers:
return { return {
'status': 'fail', "status": "fail",
'description': "Posting failed for at least 1 publisher", "description": "Posting failed for at least 1 publisher",
'failed_publishers': failed_publishers, "failed_publishers": failed_publishers,
'successful_publishers': successful_publishers, "successful_publishers": successful_publishers,
} }
return { return {
'status': 'success', "status": "success",
'description': "https://www.youtube.com/watch?v=2lHgmC6PBBE", "description": "https://www.youtube.com/watch?v=2lHgmC6PBBE",
} }

View File

@ -46,6 +46,21 @@ class AbstractPublisher(ABC):
""" """
raise NotImplementedError raise NotImplementedError
@abstractmethod
def are_credetials_valid(self):
try:
self.validate_credentials()
except Exception:
return False
return True
def is_event_valid(self):
try:
self.validate_event()
except Exception:
return False
return True
@abstractmethod @abstractmethod
def validate_event(self) -> bool: def validate_event(self) -> bool:
""" """