diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-01-24 16:15:35 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-01-24 16:15:35 +0100 |
| commit | 975158b1a2c6a1fbd79b93c6ee1aae127b8672c1 (patch) | |
| tree | 159121251f9226aafa3a4c0318b211b64fe8469d /main.go | |
| download | ticket-counter-975158b1a2c6a1fbd79b93c6ee1aae127b8672c1.tar.gz ticket-counter-975158b1a2c6a1fbd79b93c6ee1aae127b8672c1.zip | |
initial commit
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 63 |
1 files changed, 63 insertions, 0 deletions
@@ -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) +} |
