taler-dashboard/main.go

70 lines
2.0 KiB
Go

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
<http://www.gnu.org/licenses/>
@author Özgür Kesim <oec-taler@kesim.org>
*/
import (
"context"
"flag"
"fmt"
"log"
"net/http"
"os"
"time"
)
var (
fl_url = flag.String("url", "https://bugs.gnunet.org/api/rest", "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", 250, "number of issues to retrieve at once")
fl_min = flag.String("min", "0.9.1", "minimum version we care for")
fl_freq = flag.Duration("fr", 30*time.Minute, "update frequency")
fl_proj = flag.Int("project", 23, "project id to use")
)
func main() {
flag.Parse()
fmt.Println("starting")
var ctx = context.Background()
var data = NewData(ctx, *fl_url, *fl_token, *fl_num)
data.projectId = *fl_proj
data.minimumVersion = *fl_min
data.Freq = *fl_freq
data.Loop()
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))
}