package main /* This file is part of taler-dashboard Copyright (C) 2023 Özgür Kesim taler-dashboard is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. taler-dashboard is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You can receive a copy of the GNU Affero General Public License from @author Özgür Kesim */ import ( "context" "flag" "fmt" "log" "net/http" "os" "time" ) var ( fl_url = flag.String("url", "https://bugs.gnunet.org/api/rest/issues", "URL to the issues") fl_token = flag.String("token", os.Getenv("MANTIS_API_TOKEN"), "API-Token") fl_port = flag.String("port", ":8080", "[ip]:port to serve") fl_num = flag.Int("num", 100, "number of issues to retrieve at once") fl_min = flag.String("min", "0.9.3", "minimum version we care for") fl_freq = flag.Duration("fr", time.Minute, "update frequency") ) func main() { flag.Parse() fmt.Println("starting") var ctx = context.Background() var data = NewData(ctx, *fl_url, *fl_token, *fl_num) data.filterId = 230 data.projectId = 23 data.minimumVersion = *fl_min data.Freq = *fl_freq data.update() go func() { var ticker = time.NewTicker(*fl_freq) for range ticker.C { select { case <-ctx.Done(): return default: fmt.Println("updating data") data.update() } } }() http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Println("got request for table") data.printTemplate(w, "table.tmpl") }) http.HandleFunc("/list", func(w http.ResponseWriter, r *http.Request) { log.Println("got request for list") data.printTemplate(w, "list.tmpl") }) http.HandleFunc("/json", func(w http.ResponseWriter, r *http.Request) { data.printJSON(w) }) fmt.Println("ready to serve") log.Fatal(http.ListenAndServe(*fl_port, nil)) }