from flask import Flask, request from secrets import cookie 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]" @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"]: 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]" if len(commits) <= 1: others = "" elif len(commits) == 2: others = " (et 1 autre commit)" else: others = f" (et {len(commits)-1} autres commits)" url_user = make_url_user(data['pusher']) # Ref doesn't have a previous commit = new branch if all(c == "0" for c in data["before"]) and data["ref"].startswith("refs/heads/"): branch = data["ref"][11:] url_branch = data["repository"]["html_url"] + f"/src/branch/{branch}" url_branch = f"[url={url_branch}]{branch}[/url]" msg = f"{url_user} a créé une nouvelle branche {url_branch} dans {url_repository}" # Pre-existing branch else: 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}" if event == "issues": url_user = make_url_user(data['sender']) 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'] in ["created", "opened"]: 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']) 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]" app.logger.warn(msg) r.post("https://www.planet-casio.com/Fr/shoutbox/api/post", data={"message": msg, "channel": "dev"}, cookies=cookie) return "OK" return "ACK"