Coverage for kube_notify/notifications/mattermost.py: 100%
15 statements
« prev ^ index » next coverage.py v7.6.0, created at 2025-02-07 09:16 +0000
« prev ^ index » next coverage.py v7.6.0, created at 2025-02-07 09:16 +0000
1import json
3import requests
5from kube_notify.utils import logger
8def send_mattermost_message(
9 webhook: str,
10 title: str,
11 description: str,
12 fields: dict[str, str],
13 channel: str | None = None,
14 username: str | None = None,
15 icon_url: str | None = None,
16) -> None:
17 # Construct the HTTP request for sending a message to Mattermost
18 headers = {"Content-Type": "application/json"}
19 message = f"##### {title} : {description}\n"
21 for key, value in fields.items():
22 message += f"**{key} :** {value}\n"
23 data = {"text": message}
24 channel and data.update({"channel": channel})
25 username and data.update({"username": username})
26 icon_url and data.update({"icon_url": icon_url})
27 response = requests.post(webhook, headers=headers, data=json.dumps(data))
28 if response.status_code != 200:
29 logger.logger.error(
30 f"[{response.status_code}] Failed to send notification to Mattermost : {str(response.content)}"
31 )