first attempt at this disaster
This commit is contained in:
parent
793a5e8c8c
commit
d82a0ba9bd
5 changed files with 39 additions and 33 deletions
BIN
matrix_webhook/formatters/__pycache__/github.cpython-310.pyc
Normal file
BIN
matrix_webhook/formatters/__pycache__/github.cpython-310.pyc
Normal file
Binary file not shown.
19
matrix_webhook/formatters/github.py
Normal file
19
matrix_webhook/formatters/github.py
Normal 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
|
16
matrix_webhook/formatters/grafana.py
Normal file
16
matrix_webhook/formatters/grafana.py
Normal 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
|
|
@ -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/
|
|
@ -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()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue