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

1import json 

2 

3import requests 

4 

5from kube_notify.utils import logger 

6 

7 

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" 

20 

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 )