pass git_webhook urls up to __init__.py to be shortened

This commit is contained in:
jesopo 2019-10-18 14:03:20 +01:00
parent 2b4f5dc75b
commit 86147ded77
4 changed files with 52 additions and 47 deletions

View file

@ -118,10 +118,15 @@ class Module(ModuleManager.BaseModule):
if repo_name and hide_org:
source = repo_name
for output in outputs:
for output, url in outputs:
output = "(%s) %s" % (
utils.irc.color(source, colors.COLOR_REPO), output)
if url:
shorturl = self.exports.get_one("shorturl")(server, url,
context=channel) or url
output = "%s - %s" % (output, shorturl)
if channel.get_setting("git-prevent-highlight", False):
output = self._prevent_highlight(server, channel,
output)

View file

@ -102,7 +102,7 @@ class Gitea(object):
return self.ping(data)
def ping(self, data):
return ["Received new webhook"]
return [["Received new webhook", None]]
def _short_hash(self, hash):
return hash[:8]
@ -120,16 +120,15 @@ class Gitea(object):
message = commit["message"].split("\n")[0].strip()
url = commit["url"]
outputs.append(
"%s pushed %s to %s: %s - %s"
% (author, hash_colored, branch, message, url))
outputs.append(["%s pushed %s to %s: %s"
% (author, hash_colored, branch, message), url])
else:
first_id = data["before"]
last_id = data["commits"][-1]["id"]
url = data["compare_url"]
outputs.append("%s pushed %d commits to %s - %s"
% (author, len(data["commits"]), branch, url))
outputs.append(["%s pushed %d commits to %s"
% (author, len(data["commits"]), branch), url])
return outputs
@ -160,8 +159,8 @@ class Gitea(object):
pr_title = data["pull_request"]["title"]
author = utils.irc.bold(data["sender"]["login"])
url = data["pull_request"]["html_url"]
return ["[PR] %s %s: %s - %s" % (
author, action_desc, pr_title, url)]
return [["[PR] %s %s: %s" %
(author, action_desc, pr_title), url]]
def issues(self, full_name, data):
@ -173,37 +172,38 @@ class Gitea(object):
url = "%s/issues/%d" % (data["repository"]["html_url"],
data["issue"]["number"])
return ["[issue] %s %s %s: %s - %s" %
(author, action, number, issue_title, url)]
return [["[issue] %s %s %s: %s" %
(author, action, number, issue_title), url]]
def issue_comment(self, full_name, data):
if "changes" in data:
# don't show this event when nothing has actually changed
if data["changes"]["body"]["from"] == data["comment"]["body"]:
return
return []
number = utils.irc.color("#%s" % data["issue"]["number"], colors.COLOR_ID)
number = utils.irc.color("#%s" % data["issue"]["number"],
colors.COLOR_ID)
action = data["action"]
issue_title = data["issue"]["title"]
type = "PR" if data["issue"]["pull_request"] else "issue"
commenter = utils.irc.bold(data["sender"]["login"])
url = data["comment"]["html_url"]
return ["[%s] %s %s on %s: %s - %s" %
(type, commenter, COMMENT_ACTIONS[action], number, issue_title,
url)]
return [["[%s] %s %s on %s: %s" %
(type, commenter, COMMENT_ACTIONS[action], number, issue_title),
url]]
def create(self, full_name, data):
ref = data["ref"]
ref_color = utils.irc.color(ref, colors.COLOR_BRANCH)
type = data["ref_type"]
sender = utils.irc.bold(data["sender"]["login"])
return ["%s created a %s: %s" % (sender, type, ref_color)]
return [["%s created a %s: %s" % (sender, type, ref_color), None]]
def delete(self, full_name, data):
ref = data["ref"]
ref_color = utils.irc.color(ref, colors.COLOR_BRANCH)
type = data["ref_type"]
sender = utils.irc.bold(data["sender"]["login"])
return ["%s deleted a %s: %s" % (sender, type, ref_color)]
return [["%s deleted a %s: %s" % (sender, type, ref_color)], None]
def repository(self, full_name, data):
return []
@ -215,12 +215,12 @@ class Gitea(object):
if name:
name = ": %s" % name
author = utils.irc.bold(data["release"]["author"]["login"])
return ["%s %s a release%s" % (author, action, name)]
return [["%s %s a release%s" % (author, action, name)], None]
def fork(self, full_name, data):
forker = utils.irc.bold(data["sender"]["login"])
fork_full_name = utils.irc.color(data["repository"]["full_name"],
utils.consts.LIGHTBLUE)
url = data["repository"]["html_url"]
return ["%s forked into %s - %s" %
(forker, fork_full_name, url)]
return [["%s forked into %s" %
(forker, fork_full_name), url]]

View file

@ -120,36 +120,38 @@ class GitHub(object):
return EVENT_CATEGORIES.get(event, [event])
def webhook(self, full_name, event, data, headers):
out = []
if event == "push":
return self.push(full_name, data)
out = self.push(full_name, data)
elif event == "commit_comment":
return self.commit_comment(full_name, data)
out = self.commit_comment(full_name, data)
elif event == "pull_request":
return self.pull_request(full_name, data)
out = self.pull_request(full_name, data)
elif event == "pull_request_review":
return self.pull_request_review(full_name, data)
out = self.pull_request_review(full_name, data)
elif event == "pull_request_review_comment":
return self.pull_request_review_comment(full_name, data)
out = self.pull_request_review_comment(full_name, data)
elif event == "issue_comment":
return self.issue_comment(full_name, data)
out = self.issue_comment(full_name, data)
elif event == "issues":
return self.issues(full_name, data)
out = self.issues(full_name, data)
elif event == "create":
return self.create(full_name, data)
out = self.create(full_name, data)
elif event == "delete":
return self.delete(full_name, data)
out = self.delete(full_name, data)
elif event == "release":
return self.release(full_name, data)
out = self.release(full_name, data)
elif event == "check_run":
return self.check_run(data)
out = self.check_run(data)
elif event == "fork":
return self.fork(full_name, data)
out = self.fork(full_name, data)
elif event == "ping":
return self.ping(data)
out = self.ping(data)
elif event == "membership":
return self.membership(organisation, data)
out = self.membership(organisation, data)
elif event == "watch":
return self.watch(data)
out = self.watch(data)
return list(zip(out, [None]*len(out)))
def _short_url(self, url):
self.log.debug("git.io shortening: %s" % url)

View file

@ -108,16 +108,15 @@ class GitLab(object):
message = commit["message"].split("\n")[0].strip()
url = commit["url"]
outputs.append(
"%s pushed %s to %s: %s - %s"
% (author, hash_colored, branch, message, url))
outputs.append(["%s pushed %s to %s: %s - %s"
% (author, hash_colored, branch, message), url])
else:
first_id = data["before"]
last_id = data["after"]
url = data["compare_url"]
outputs.append("%s pushed %d commits to %s"
% (author, len(data["commits"]), branch))
outputs.append(["%s pushed %d commits to %s"
% (author, len(data["commits"]), branch), None])
return outputs
@ -143,8 +142,7 @@ class GitLab(object):
pr_title = data["object_attributes"]["title"]
author = utils.irc.bold(data["user"]["username"])
url = data["object_attributes"]["url"]
return ["[MR] %s %s: %s - %s" % (
author, action_desc, pr_title, url)]
return [["[MR] %s %s: %s" % (author, action_desc, pr_title), url]]
def issues(self, full_name, data):
number = utils.irc.color("#%s" % data["object_attributes"]["iid"],
@ -154,8 +152,8 @@ class GitLab(object):
author = utils.irc.bold(data["user"]["username"])
url = data["object_attributes"]["url"]
return ["[issue] %s %s %s: %s - %s" %
(author, action, number, issue_title, url)]
return [["[issue] %s %s %s: %s - %s" %
(author, action, number, issue_title), url]]
def note(self, full_name, data):
type = data["object_attributes"]["noteable_type"]
@ -171,5 +169,5 @@ class GitLab(object):
issue_title = data["issue"]["title"]
commenter = utils.irc.bold(data["user"]["username"])
url = data["object_attributes"]["url"]
return ["[%s] %s commented on %s: %s - %s" %
(type, commenter, number, issue_title, url)]
return [["[%s] %s commented on %s: %s" %
(type, commenter, number, issue_title), url]]