From 975158b1a2c6a1fbd79b93c6ee1aae127b8672c1 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sat, 24 Jan 2026 16:15:35 +0100 Subject: initial commit --- main.go | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..fb69638 --- /dev/null +++ b/main.go @@ -0,0 +1,63 @@ +package main + +import ( + _ "embed" + "fmt" + "html/template" + "log" + "net/http" + "sync/atomic" +) + +//go:embed index.html +var indexTemplate string + +var pageTemplate *template.Template + +var open atomic.Uint64 +var done atomic.Uint64 + +func pageHandler(w http.ResponseWriter, r *http.Request) { + tempData := struct { + Open uint64 + Done uint64 + IsAdmin bool + }{open.Load(), done.Load() + 1, r.URL.Query().Has("admin")} + + if err := pageTemplate.Execute(w, tempData); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } +} + +func newHandler(w http.ResponseWriter, r *http.Request) { + ticket := open.Add(1) + log.Printf("Create ticket %d\n", ticket) + if _, err := fmt.Fprintf(w, "%d", ticket); err != nil { + log.Printf("Writing response failed: %v", err) + } +} + +func doneHandler(w http.ResponseWriter, r *http.Request) { + ticket := done.Add(1) + log.Printf("Finished ticket %d\n", ticket) + if _, err := fmt.Fprintf(w, "%d", ticket); err != nil { + log.Printf("Writing response failed: %v", err) + } +} + +func setupRoutes() { + http.HandleFunc("/", pageHandler) + http.HandleFunc("/new", newHandler) + http.HandleFunc("/done", doneHandler) +} + +func main() { + setupRoutes() + + pageTemplate = template.Must(template.New("index").Parse(indexTemplate)) + + log.Printf("Serving http on %d", 8080) + err := http.ListenAndServe(fmt.Sprintf(":%d", 8080), nil) + log.Panicf("Serving http failed with %s", err) +} -- cgit v1.2.3