feat: breakout formatters into their own plugin-like module to ease additonal formatters
This commit is contained in:
parent
d82a0ba9bd
commit
0d92c378c4
6 changed files with 13 additions and 19 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@
|
|||
.mypy_cache
|
||||
coverage.xml
|
||||
htmlcov
|
||||
**__pycache__
|
||||
|
|
Binary file not shown.
|
@ -1,8 +1,4 @@
|
|||
import plugins
|
||||
|
||||
|
||||
@plugins.register
|
||||
def github(data, headers):
|
||||
def formatter(data, headers):
|
||||
"""Pretty-print a github notification."""
|
||||
# TODO: Write nice useful formatters. This is only an example.
|
||||
if headers["X-GitHub-Event"] == "push":
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
import plugins
|
||||
|
||||
|
||||
@plugins.register
|
||||
def grafana(data, headers):
|
||||
def formatter(data, headers):
|
||||
"""Pretty-print a grafana notification."""
|
||||
text = ""
|
||||
if "title" in data:
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import plugins
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
@plugin.register
|
||||
def pingdom(data, headers):
|
||||
def formatter(data, headers):
|
||||
"""Pretty-print a pingdom notification."""
|
||||
#JSON data formatting was obtained from https://www.pingdom.com/resources/webhooks/
|
||||
check_id = data["check_id"]
|
||||
|
|
|
@ -4,11 +4,11 @@ import json
|
|||
import logging
|
||||
from http import HTTPStatus
|
||||
from hmac import HMAC
|
||||
import plugins
|
||||
import importlib
|
||||
|
||||
from markdown import markdown
|
||||
|
||||
from . import conf, formatters, utils
|
||||
from . import conf, utils
|
||||
|
||||
LOGGER = logging.getLogger("matrix_webhook.handler")
|
||||
|
||||
|
@ -19,7 +19,6 @@ 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()
|
||||
|
||||
|
@ -38,9 +37,12 @@ async def matrix_webhook(request):
|
|||
|
||||
if "formatter" in request.rel_url.query:
|
||||
try:
|
||||
data = getattr(formatters, request.rel_url.query["formatter"])(
|
||||
data, request.headers
|
||||
)
|
||||
# data = getattr(formatters, request.rel_url.query["formatter"])(
|
||||
# data, request.headers
|
||||
# )
|
||||
format = request.rel_url.query["formatter"]
|
||||
plugin = importlib.import_module(f"matrix_webhook.formatters.{format}", "formatter")
|
||||
data = plugin.formatter(data, request.headers)
|
||||
except AttributeError:
|
||||
return utils.create_json_response(
|
||||
HTTPStatus.BAD_REQUEST, "Unknown formatter"
|
||||
|
|
Loading…
Reference in a new issue