diff --git a/src/kassandra/__main__.py b/src/kassandra/__main__.py index 0d1294e..e6ae08c 100644 --- a/src/kassandra/__main__.py +++ b/src/kassandra/__main__.py @@ -3,6 +3,7 @@ import asyncio from .config import load_config from .bot import send_messages +from .format import format_alerts from .webhook import run_webhook async def main(): @@ -12,14 +13,19 @@ async def main(): config = load_config(args.config) alert_queue = asyncio.Queue() + message_queue = asyncio.Queue() bot_corout = send_messages( - alert_queue, # Will change in the futur + message_queue, config.username, config.homeserver, config.password, config.alert_rooms ) + format_corout = format_alerts( + alert_queue, + message_queue + ) webhook_corout = run_webhook( alert_queue, config.host, @@ -29,6 +35,7 @@ async def main(): await asyncio.gather( bot_corout, + format_corout, webhook_corout ) diff --git a/src/kassandra/format.py b/src/kassandra/format.py new file mode 100644 index 0000000..7daad51 --- /dev/null +++ b/src/kassandra/format.py @@ -0,0 +1,31 @@ +""" +Format the alert message. +""" + +import asyncio +from typing import ( + Any, + NoReturn +) + +def format_alert( + alert: dict[str, Any] +)->str: + """ + Format an alert in json format to a nice string. + """ + return str(alert) + +async def format_alerts( + alert_queue: asyncio.Queue[dict[str,Any]], + message_queue: asyncio.Queue[str] +)->NoReturn: + """ + Read alerts from alert_queue, format them, and put them in message_queue. + """ + while True: + alert = await alert_queue.get() + message = format_alert(alert) + await message_queue.put(message) + alert_queue.task_done() +