Gitea-bot/app.py

71 lines
2.7 KiB
Python
Raw Normal View History

2020-09-24 19:51:27 +02:00
from flask import Flask, request
2020-09-24 22:11:51 +02:00
from secrets import cookie
2020-09-24 19:51:27 +02:00
import requests as r
app = Flask(__name__)
def make_url_user(user):
return f"[url=https://gitea.planet-casio.com/{user['username']}]{user['username']}[/url]"
def make_url_repository(repository):
fork = " (fork)" if repository["fork"] else ""
return f"[url={repository['html_url']}]{repository['name']}{fork}[/url]"
2020-09-24 19:51:27 +02:00
@app.route("/", methods=["GET", "POST"])
def main():
data = request.json
event = request.headers['X-Gitea-Event']
msg = None
url_repository = make_url_repository(data["repository"])
if data["repository"]["private"]:
2020-10-13 23:46:28 +02:00
return "IGN"
if event == "push" and data["commits"] != []:
commits = data["commits"]
commit_count = f"{len(commits)} commit{'s' if len(commits) > 1 else ''}"
message = "[inlinecode]" + commits[0]["message"].split('\n',1)[0] + "[/inlinecode]"
others = f" (et {len(commits)-1} autres commits)" if len(commits) > 1 else ""
url_user = make_url_user(data['pusher'])
url_commits = f"[url={data['compare_url']}]{commit_count}[/url]"
msg = f"{url_user} a poussé {url_commits} dans {url_repository} : {message}{others}"
if event == "push" and data["ref"].startswith("refs/tags/"):
url_user = make_url_user(data['pusher'])
tag_name = data["ref"][10:]
url_tag = data["repository"]["html_url"] + f"/src/tag/{tag_name}"
url_tag = f"[url={url_tag}]{tag_name}[/url]"
if all(c == '0' for c in data["before"]):
msg = f"{url_user} a créé le tag {url_tag} dans {url_repository}"
else:
msg = f"{url_user} a mis à jour le tag {url_tag} dans {url_repository}"
2020-09-24 19:51:27 +02:00
if event == "issues":
url_user = make_url_user(data['sender'])
2020-09-24 19:51:27 +02:00
url_issue = f"[url={data['issue']['html_url']}]{data['issue']['title']}[/url]"
if data['action'] == "closed":
msg = f"{url_user} a fermé le ticket {url_issue} dans {url_repository}"
elif data['action'] == "created":
msg = f"{url_user} a créé un ticket {url_issue} dans {url_repository}"
else:
msg = f"{url_user} a <{data['action']}> le ticket {url_issue} dans {url_repository}"
if event == "issue_comment":
url_user = make_url_user(data['sender'])
2020-09-24 19:51:27 +02:00
url_issue = f"[url={data['issue']['html_url']}]{data['issue']['title']}[/url]"
if data['action'] == "created":
msg = f"{url_user} a répondu au ticket {url_issue} dans {url_repository}"
if msg:
msg = f"[gray][i]{msg}[/i][/gray]"
2020-10-13 23:46:28 +02:00
app.logger.warn(msg)
2020-09-24 19:51:27 +02:00
r.post("https://www.planet-casio.com/Fr/shoutbox/api/post",
2020-09-24 22:11:51 +02:00
data={"message": msg, "channel": "dev"}, cookies=cookie)
2020-10-13 23:46:28 +02:00
return "OK"
2020-09-24 19:51:27 +02:00
2020-10-13 23:46:28 +02:00
return "ACK"