From 42bdf2994d98d904ad989e1963fbe92f072023b4 Mon Sep 17 00:00:00 2001 From: amcmanu3 Date: Sat, 7 Oct 2023 13:06:26 -0400 Subject: [PATCH] Move callback to unbound --- app/classes/shared/server.py | 75 +++++++++++++++++------------------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 0747ff55..ccd09605 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -41,7 +41,43 @@ with redirect_stderr(NullWriter()): logger = logging.getLogger(__name__) +def callback(called_func): + # Usage of @callback on method + # definition to run a webhook check + # on method completion + def wrapper(*args, **kwargs): + res = None + logger.debug("Checking for callbacks") + try: + res = called_func(*args, **kwargs) + finally: + events = WebhookFactory.get_monitored_events() + if called_func.__name__ in events: + server_webhooks = HelpersWebhooks.get_webhooks_by_server( + args[0].server_id, True + ) + for swebhook in server_webhooks: + if called_func.__name__ in str(swebhook.trigger).split(","): + logger.info( + f"Found callback for event {called_func.__name__}" + f" for server {args[0].server_id}" + ) + webhook = HelpersWebhooks.get_webhook_by_id(swebhook.id) + webhook_provider = WebhookFactory.create_provider( + webhook["webhook_type"] + ) + if res is not False and swebhook.enabled: + webhook_provider.send( + bot_name=webhook["bot_name"], + server_name=args[0].name, + title=webhook["name"], + url=webhook["url"], + message=webhook["body"], + color=webhook["color"], + ) + return res + return wrapper class ServerOutBuf: lines = {} @@ -166,45 +202,6 @@ class ServerInstance: self.stats_helper.server_crash_reset() self.stats_helper.set_update(False) - @staticmethod - def callback(called_func): - # Usage of @callback on method - # definition to run a webhook check - # on method completion - def wrapper(*args, **kwargs): - res = None - logger.debug("Checking for callbacks") - try: - res = called_func(*args, **kwargs) - finally: - events = WebhookFactory.get_monitored_events() - if called_func.__name__ in events: - server_webhooks = HelpersWebhooks.get_webhooks_by_server( - args[0].server_id, True - ) - for swebhook in server_webhooks: - if called_func.__name__ in str(swebhook.trigger).split(","): - logger.info( - f"Found callback for event {called_func.__name__}" - f" for server {args[0].server_id}" - ) - webhook = HelpersWebhooks.get_webhook_by_id(swebhook.id) - webhook_provider = WebhookFactory.create_provider( - webhook["webhook_type"] - ) - if res is not False and swebhook.enabled: - webhook_provider.send( - bot_name=webhook["bot_name"], - server_name=args[0].name, - title=webhook["name"], - url=webhook["url"], - message=webhook["body"], - color=webhook["color"], - ) - return res - - return wrapper - # ********************************************************************************** # Minecraft Server Management # **********************************************************************************