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."""
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
import plugins
@plugin.register
def pingdom(data, headers):
"""Pretty-print a pingdom notification."""
#JSON data formatting was obtained from https://www.pingdom.com/resources/webhooks/

View file

@ -4,6 +4,7 @@ import json
import logging
from http import HTTPStatus
from hmac import HMAC
import plugins
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.
"""
formatters = plugins.names_factory(__package__)
LOGGER.debug(f"Handling {request=}")
data_b = await request.read()