mirror of
https://github.com/bsedin/matrix-webhook.git
synced 2026-04-09 11:25:40 +00:00
Merge pull request #93 from nrekretep/master
Add integration with Github Release Notifier
This commit is contained in:
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
- add github-release-notifier formatter
|
||||||
|
in [#93](https://github.com/nim65s/matrix-webhook/pull/93)
|
||||||
|
by [@nrekretep](https://github.com/nrekretep)
|
||||||
|
|
||||||
## [v3.8.0] - 2023-04-08
|
## [v3.8.0] - 2023-04-08
|
||||||
|
|
||||||
- add a healthcheck for load balancers
|
- add a healthcheck for load balancers
|
||||||
|
|||||||
@@ -122,6 +122,10 @@ Add a Google Chat integration with an URL ending with `?formatter=gitlab_gchat&k
|
|||||||
|
|
||||||
Add a Microsoft Teams integration with an URL ending with `?formatter=gitlab_teams&key=API_KEY`
|
Add a Microsoft Teams integration with an URL ending with `?formatter=gitlab_teams&key=API_KEY`
|
||||||
|
|
||||||
|
#### Github Release Notifier
|
||||||
|
|
||||||
|
To receiver notifications about new releases of projects hosted at github.com you can add a matrix webhook ending with `?formatter=grn&key=API_KEY` to [Github Release Notifier (grn)](https://github.com/femtopixel/github-release-notifier).
|
||||||
|
|
||||||
## Test room
|
## Test room
|
||||||
|
|
||||||
[#matrix-webhook:tetaneutral.net](https://matrix.to/#/!DPrUlnwOhBEfYwsDLh:matrix.org)
|
[#matrix-webhook:tetaneutral.net](https://matrix.to/#/!DPrUlnwOhBEfYwsDLh:matrix.org)
|
||||||
|
|||||||
@@ -71,3 +71,17 @@ def gitlab_teams(data, headers):
|
|||||||
|
|
||||||
data["body"] = " \n".join(body)
|
data["body"] = " \n".join(body)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def grn(data, headers):
|
||||||
|
"""Pretty-print a github release notifier (grn) notification."""
|
||||||
|
version, title, author, package = (
|
||||||
|
data[k] for k in ["version", "title", "author", "package_name"]
|
||||||
|
)
|
||||||
|
data["body"] = (
|
||||||
|
f"### {package} - {version}\n\n{title}\n\n"
|
||||||
|
f"[{author} released new version **{version}** for **{package}**]"
|
||||||
|
f"(https://github.com/{package}/releases/tag/{version}).\n\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
return data
|
||||||
|
|||||||
9
tests/example_grn.json
Normal file
9
tests/example_grn.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"date": [2017, 11, 13, 19, 46, 35, 0, 317, 0],
|
||||||
|
"version": "0.7.2",
|
||||||
|
"title": "Fixes split modules",
|
||||||
|
"content": "",
|
||||||
|
"media": "https://avatars0.githubusercontent.com/u/14236493?s=60&v=4",
|
||||||
|
"author": "jaymoulin",
|
||||||
|
"package_name": "jaymoulin/google-music-manager"
|
||||||
|
}
|
||||||
44
tests/test_grn.py
Normal file
44
tests/test_grn.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
"""Test module for Github Release Notifier (grn) formatter.
|
||||||
|
|
||||||
|
ref https://github.com/femtopixel/github-release-notifier
|
||||||
|
"""
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import httpx
|
||||||
|
import nio
|
||||||
|
|
||||||
|
from .start import BOT_URL, FULL_ID, KEY, MATRIX_ID, MATRIX_PW, MATRIX_URL
|
||||||
|
|
||||||
|
|
||||||
|
class GithubReleaseNotifierFormatterTest(unittest.IsolatedAsyncioTestCase):
|
||||||
|
"""GRN formatter test class."""
|
||||||
|
|
||||||
|
async def test_grn_body(self):
|
||||||
|
"""Send a markdown message, and check the result."""
|
||||||
|
messages = []
|
||||||
|
client = nio.AsyncClient(MATRIX_URL, MATRIX_ID)
|
||||||
|
|
||||||
|
await client.login(MATRIX_PW)
|
||||||
|
room = await client.room_create()
|
||||||
|
|
||||||
|
with Path("tests/example_grn.json").open() as f:
|
||||||
|
example_grn_request = f.read()
|
||||||
|
self.assertEqual(
|
||||||
|
httpx.post(
|
||||||
|
f"{BOT_URL}/{room.room_id}",
|
||||||
|
params={"formatter": "grn", "key": KEY},
|
||||||
|
content=example_grn_request,
|
||||||
|
).json(),
|
||||||
|
{"status": 200, "ret": "OK"},
|
||||||
|
)
|
||||||
|
|
||||||
|
sync = await client.sync()
|
||||||
|
messages = await client.room_messages(room.room_id, sync.next_batch)
|
||||||
|
await client.close()
|
||||||
|
|
||||||
|
message = messages.chunk[0]
|
||||||
|
self.assertEqual(message.sender, FULL_ID)
|
||||||
|
self.assertIn("Fixes split modules", message.body)
|
||||||
|
self.assertIn("jaymoulin/google-music-manager", message.body)
|
||||||
Reference in New Issue
Block a user