first attempt at this disaster

This commit is contained in:
Alex Kelly 2021-11-03 16:12:52 -04:00
parent 793a5e8c8c
commit d82a0ba9bd
5 changed files with 39 additions and 33 deletions

View file

@ -0,0 +1,19 @@
import plugins
@plugins.register
def github(data, headers):
"""Pretty-print a github notification."""
# TODO: Write nice useful formatters. This is only an example.
if headers["X-GitHub-Event"] == "push":
pusher, ref, a, b, c = [
data[k] for k in ["pusher", "ref", "after", "before", "compare"]
]
pusher = f"[@{pusher['name']}](https://github.com/{pusher['name']})"
data["body"] = f"{pusher} pushed on {ref}: [{b}{a}]({c}):\n\n"
for commit in data["commits"]:
data["body"] += f"- [{commit['message']}]({commit['url']})\n"
else:
data["body"] = "notification from github"
data["digest"] = headers["X-Hub-Signature-256"].replace("sha256=", "")
return data

View file

@ -0,0 +1,16 @@
import plugins
@plugins.register
def grafana(data, headers):
"""Pretty-print a grafana notification."""
text = ""
if "title" in data:
text = "#### " + data["title"] + "\n"
if "message" in data:
text = text + data["message"] + "\n\n"
if "evalMatches" in data:
for match in data["evalMatches"]:
text = text + "* " + match["metric"] + ": " + str(match["value"]) + "\n"
data["body"] = text
return data

View file

@ -1,38 +1,7 @@
"""Formatters for matrix webhook.""" import plugins
from datetime import datetime
def grafana(data, headers):
"""Pretty-print a grafana notification."""
text = ""
if "title" in data:
text = "#### " + data["title"] + "\n"
if "message" in data:
text = text + data["message"] + "\n\n"
if "evalMatches" in data:
for match in data["evalMatches"]:
text = text + "* " + match["metric"] + ": " + str(match["value"]) + "\n"
data["body"] = text
return data
def github(data, headers):
"""Pretty-print a github notification."""
# TODO: Write nice useful formatters. This is only an example.
if headers["X-GitHub-Event"] == "push":
pusher, ref, a, b, c = [
data[k] for k in ["pusher", "ref", "after", "before", "compare"]
]
pusher = f"[@{pusher['name']}](https://github.com/{pusher['name']})"
data["body"] = f"{pusher} pushed on {ref}: [{b}{a}]({c}):\n\n"
for commit in data["commits"]:
data["body"] += f"- [{commit['message']}]({commit['url']})\n"
else:
data["body"] = "notification from github"
data["digest"] = headers["X-Hub-Signature-256"].replace("sha256=", "")
return data
@plugin.register
def pingdom(data, headers): def pingdom(data, headers):
"""Pretty-print a pingdom notification.""" """Pretty-print a pingdom notification."""
#JSON data formatting was obtained from https://www.pingdom.com/resources/webhooks/ #JSON data formatting was obtained from https://www.pingdom.com/resources/webhooks/

View file

@ -4,6 +4,7 @@ import json
import logging import logging
from http import HTTPStatus from http import HTTPStatus
from hmac import HMAC from hmac import HMAC
import plugins
from markdown import markdown from markdown import markdown
@ -18,6 +19,7 @@ async def matrix_webhook(request):
This one handles a POST, checks its content, and forwards it to the matrix room. This one handles a POST, checks its content, and forwards it to the matrix room.
""" """
formatters = plugins.names_factory(__package__)
LOGGER.debug(f"Handling {request=}") LOGGER.debug(f"Handling {request=}")
data_b = await request.read() data_b = await request.read()