From 709b0fbe211acc1667b725d13b274a3ec1b52f1b Mon Sep 17 00:00:00 2001 From: ahoemann Date: Tue, 28 Jan 2025 07:33:47 +0000 Subject: [PATCH] feat: convert to golang --- app.py | 93 +++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 60 insertions(+), 33 deletions(-) diff --git a/app.py b/app.py index 29999af..2520cfc 100755 --- a/app.py +++ b/app.py @@ -1,42 +1,69 @@ -#!/usr/bin/env python3 -from flask import Flask, render_template, redirect, url_for -import requests -import os +package main -app = Flask(__name__) +import ( + "net/http" + "os" + "html/template" + "log" +) -@app.route("/imprint") -def root(): - return render_template("imprint.html") +var templates = template.Must(template.ParseGlob("*.html")) -@app.route("/about") -def about(): - return render_template("about.html") +func main() { + mode := os.Getenv("DEBUG_MODE") + if mode == "true" { + log.Println("Debug mode is on") + } + http.HandleFunc("/imprint", imprint) + http.HandleFunc("/about", about) + http.HandleFunc("/", homepage) + http.HandleFunc("/monitoring", monitoring) + log.Fatal(http.ListenAndServe(":8080", nil)) +} -@app.route("/") -def homepage(): - return render_template("homepage.html") +func imprint(w http.ResponseWriter, r *http.Request) { + renderTemplate(w, "imprint.html") +} -@app.route("/monitoring") -def monitoring(): - git_url = os.environ['GIT_URL'] - website_url = os.environ['WEBSITE_URL'] - return render_template("monitoring.html", git_status = get_status(git_url), website_status = get_status(website_url) ) +func about(w http.ResponseWriter, r *http.Request) { + renderTemplate(w, "about.html") +} -def get_status_code(link): - requested_site = requests.get(link) - return requested_site.status_code +func homepage(w http.ResponseWriter, r *http.Request) { + renderTemplate(w, "homepage.html") +} -def get_status(link): - try: - match get_status_code(link): - case 200: - return "ONLINE" - case _: - return "ERROR" - except: +func monitoring(w http.ResponseWriter, r *http.Request) { + gitURL := os.Getenv("GIT_URL") + websiteURL := os.Getenv("WEBSITE_URL") + gitStatus := getStatus(gitURL) + websiteStatus := getStatus(websiteURL) + data := struct { + GitStatus string + WebsiteStatus string + }{ + GitStatus: gitStatus, + WebsiteStatus: websiteStatus, + } + renderTemplate(w, "monitoring.html", data) +} + +func renderTemplate(w http.ResponseWriter, tmpl string, data ...interface{}) { + err := templates.ExecuteTemplate(w, tmpl, data) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } +} + +func getStatus(link string) string { + resp, err := http.Get(link) + if err != nil { return "OFFLINE" + } + defer resp.Body.Close() + if resp.StatusCode == 200 { + return "ONLINE" + } + return "ERROR" +} -if __name__ == "__main__": - mode = os.environ['DEBUG_MODE'] - app.run(debug=mode)