From fabc1e7eff0fa2f92d31ac65576de75d28421c89 Mon Sep 17 00:00:00 2001 From: Simone Robutti Date: Sun, 2 May 2021 10:46:58 +0200 Subject: [PATCH] added predicates --- mobilizon_bots/publishers/__init__.py | 31 ++++++++++++--------------- mobilizon_bots/publishers/abstract.py | 15 +++++++++++++ 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/mobilizon_bots/publishers/__init__.py b/mobilizon_bots/publishers/__init__.py index 7832e96..1e407bc 100644 --- a/mobilizon_bots/publishers/__init__.py +++ b/mobilizon_bots/publishers/__init__.py @@ -1,25 +1,22 @@ from typing import Iterable -from . import abstract -from . import telegram - -# WIP -# from . import twitter +from mobilizon_bots.publishers import abstract def run(publishers: Iterable[abstract.AbstractPublisher]) -> dict: invalid_credentials, invalid_event = [], [] for p in publishers: - if not p.validate_credentials(): + if not p.are_credetials_valid(): invalid_credentials.append(p) - if not p.validate_event(): + if not p.is_event_valid(): invalid_event.append(p) if invalid_credentials or invalid_event: + # TODO: consider to use exceptions or data class if necessary return { - 'status': 'fail', - 'description': "Validation failed for at least 1 publisher", - 'invalid_credentials': invalid_credentials, - 'invalid_event': invalid_event, + "status": "fail", + "description": "Validation failed for at least 1 publisher", + "invalid_credentials": invalid_credentials, + "invalid_event": invalid_event, } failed_publishers, successful_publishers = [], [] for p in publishers: @@ -29,12 +26,12 @@ def run(publishers: Iterable[abstract.AbstractPublisher]) -> dict: failed_publishers.append(p) if failed_publishers: return { - 'status': 'fail', - 'description': "Posting failed for at least 1 publisher", - 'failed_publishers': failed_publishers, - 'successful_publishers': successful_publishers, + "status": "fail", + "description": "Posting failed for at least 1 publisher", + "failed_publishers": failed_publishers, + "successful_publishers": successful_publishers, } return { - 'status': 'success', - 'description': "https://www.youtube.com/watch?v=2lHgmC6PBBE", + "status": "success", + "description": "https://www.youtube.com/watch?v=2lHgmC6PBBE", } diff --git a/mobilizon_bots/publishers/abstract.py b/mobilizon_bots/publishers/abstract.py index d9083a2..47fb288 100644 --- a/mobilizon_bots/publishers/abstract.py +++ b/mobilizon_bots/publishers/abstract.py @@ -46,6 +46,21 @@ class AbstractPublisher(ABC): """ 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 def validate_event(self) -> bool: """