tubearchivist-server/tubearchivist/web/views.py

82 lines
2.0 KiB
Python
Raw Normal View History

2022-04-29 10:48:25 +00:00
"""holds all views and api endpoints"""
from os import environ
from apscheduler.schedulers.background import BackgroundScheduler
2022-12-03 02:28:13 +00:00
from flask import Flask, render_template, jsonify, request, redirect
from src.api_docker import run_docker_backup
2022-04-29 10:48:25 +00:00
from src.webhook_docker import DockerHook
2022-05-20 04:41:44 +00:00
from src.webhook_github import GithubBackup, GithubHook
2022-04-29 10:48:25 +00:00
import markdown
app = Flask(__name__)
scheduler = BackgroundScheduler(timezone=environ.get("TZ"))
scheduler.add_job(
run_docker_backup,
trigger="cron",
day="*",
hour="*",
2022-06-06 09:17:13 +00:00
minute="0",
name="docker_backup",
)
scheduler.start()
2022-04-29 10:48:25 +00:00
@app.route("/")
def home():
"""home page"""
latest = GithubBackup("latest").get_tag()
latest_notes = markdown.markdown(latest["release_notes"])
return render_template(
'home.html', latest=latest, latest_notes=latest_notes
)
2022-12-03 02:28:13 +00:00
@app.route("/discord")
def discord_redirect():
"""redirect to current discord invite link"""
invite = environ.get("discord")
return redirect(f"https://discord.gg/{invite}", code=302)
2022-04-29 10:48:25 +00:00
@app.route("/api/release/<release_id>/")
def release(release_id):
"""api release"""
result = GithubBackup(release_id).get_tag()
return jsonify(result)
@app.route("/api/webhook/docker/", methods=['POST'])
def webhook_docker():
"""parse docker webhook data"""
2022-05-20 04:41:44 +00:00
handler = DockerHook(request)
valid = handler.validate()
print(f"valid: {valid}")
if not valid:
return "Forbidden", 403
2022-04-29 10:48:25 +00:00
print(request.json)
2022-05-20 04:41:44 +00:00
message = handler.process()
2022-05-20 13:08:12 +00:00
handler.save_hook()
2022-05-20 04:41:44 +00:00
2022-04-29 10:48:25 +00:00
print(message, "hook sent to discord")
return jsonify(message)
@app.route("/api/webhook/github/", methods=['POST'])
def webhook_github():
"""prase webhooks from github"""
2022-05-20 04:41:44 +00:00
handler = GithubHook(request)
valid = handler.validate()
print(f"valid: {valid}")
if not valid:
return "Forbidden", 403
2022-04-29 10:48:25 +00:00
print(request.json)
2022-05-20 04:41:44 +00:00
handler.create_hook_task()
2022-05-20 13:08:12 +00:00
handler.save_hook()
2022-05-20 04:41:44 +00:00
message = {"success": True}
2022-04-29 10:48:25 +00:00
return jsonify(message)