Skip to content
Snippets Groups Projects
Unverified Commit df55f012 authored by Lorenz Steinert's avatar Lorenz Steinert
Browse files

use GitlabPushEvent

parent e50e766f
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,8 @@ from aiohttp import web ...@@ -6,7 +6,8 @@ from aiohttp import web
from maubot.handlers import event from maubot.handlers import event
from mautrix.types import (EventType, EventID, MessageType, TextMessageEventContent, Format) from mautrix.types import (EventType, EventID, MessageType,
TextMessageEventContent, Format)
from mautrix.util.config import BaseProxyConfig, ConfigUpdateHelper from mautrix.util.config import BaseProxyConfig, ConfigUpdateHelper
...@@ -14,75 +15,18 @@ from maubot import Plugin, MessageEvent ...@@ -14,75 +15,18 @@ from maubot import Plugin, MessageEvent
from maubot.matrix import parse_markdown from maubot.matrix import parse_markdown
from .gitlab_hook import (GitlabPushEvent, GitlabTagEvent, GitlabIssueEvent,
GitlabNoteEvent, GitlabMergeRequestEvent,
GitlabWikiPageEvent, GitlabPipelineEvent)
def handlePushEvent(body) -> str:
branch = body['ref'].replace('refs/heads/', '')
if int(body['total_commits_count']) == 0: EventParse = {'Push Hook': GitlabPushEvent,
msg = "\[{2!s}/{3!s}\] {4!s} force pushed to" \ 'Tag Push Hook': GitlabTagEvent,
"or deleted branch [{1!s}]({0!s}/tree/{1!s})" 'Issue Hook': GitlabIssueEvent,
return msg.format(body['project']['web_url'], 'Note Hook': GitlabNoteEvent,
branch, 'Merge Request Hook': GitlabMergeRequestEvent,
body['project']['namespace'], 'Wiki Page Hook': GitlabWikiPageEvent,
body['project']['name'], 'Pipeline Hook': GitlabPipelineEvent
body['user_username']
)
pluralizer: str = ''
if int(body['total_commits_count']) != 1:
pluralizer = 's'
msg = "\[[{2!s}/{3!s}]({0!s}/tree/{1!s})\] " \
"{4:d} new commit{6!s} by {5!s}\n\n"
msg = msg.format(body['project']['web_url'],
branch,
body['project']['namespace'],
body['project']['name'],
body['total_commits_count'],
body['user_username'],
pluralizer
)
for commit in reversed(body['commits']):
lines = commit['message'].split('\n')
if len(lines) > 1 and len(''.join(lines[1:])) > 0:
lines[0] += " (...)"
msg += "+ {0!s} ({1!s})\n".format(lines[0], commit['id'][:8])
return msg
def handleTagEvent(body):
pass
def handleIssueEvent(body):
pass
def handleNoteEvent(body):
pass
def handleMergeRequestEvent(body):
pass
def handleWikiPageEvent(body):
pass
def handlePipelineEvent(body):
pass
EventParse = {'Push Hook': handlePushEvent,
'Tag Push Hook': handleTagEvent,
'Issue Hook': handleIssueEvent,
'Note Hook': handleNoteEvent,
'Merge Request Hook': handleMergeRequestEvent,
'Wiki Page Hook': handleWikiPageEvent,
'Pipeline Hook': handlePipelineEvent
} }
...@@ -128,16 +72,16 @@ class Gitlab(Plugin): ...@@ -128,16 +72,16 @@ class Gitlab(Plugin):
self.log.debug('missing X-Gitlab-Event Header') self.log.debug('missing X-Gitlab-Event Header')
return None return None
GitlabEvent = req.headers['X-Gitlab-Event'] GitlabEvent = EventParse[req.headers['X-Gitlab-Event']](body)
msg = EventParse[GitlabEvent](body) msg = GitlabEvent.handle()
await self.send_gitlab_event(req.query['room'], msg) await self.send_gitlab_event(req.query['room'], msg)
async def post_handler(self, request: web.Request) -> web.Response: async def post_handler(self, request: web.Request) -> web.Response:
# check the authorisation of the request # check the authorisation of the request
if 'X-Gitlab-Token' not in request.headers \ if 'X-Gitlab-Token' not in request.headers \
or not request.headers['X-Gitlab-Token'] == self.config['secret']: or not request.headers['X-Gitlab-Token'] == self.config['secret']: # noqa: E501
resp_text = '403 FORBIDDEN' resp_text = '403 FORBIDDEN'
return web.Response(text=resp_text, return web.Response(text=resp_text,
status=403 status=403
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment