diff options
author | Özgür Kesim <oec@codeblau.de> | 2023-12-27 13:20:51 +0100 |
---|---|---|
committer | Özgür Kesim <oec@codeblau.de> | 2023-12-27 13:20:51 +0100 |
commit | 61c174dd2bdabcb4ee953e2e50ea141567515140 (patch) | |
tree | dca4b53e34a08b2ced30add87e9611a5b1a7e960 | |
parent | f41cbf148196f77b4ce0e2c912e14ee31dbf7837 (diff) |
move update into data.go
-rw-r--r-- | data.go | 43 | ||||
-rw-r--r-- | main.go | 24 |
2 files changed, 46 insertions, 21 deletions
@@ -39,12 +39,12 @@ type Data struct { token string num int projectId int - filterId int minimumVersion string tmpl *template.Template ctx context.Context Issues Issues + Projects Projects Timestamp time.Time Freq time.Duration Lasterror error @@ -70,9 +70,29 @@ func NewData(ctx context.Context, url, token string, num int) *Data { return data } +const statusFilter = `status%5B%5D=10&status%5B%5D=20&status%5B%5D=30&status%5B%5D=40&status%5B%5D=50&severity%5B%5D=20` + +var fields = []string{"id", + "description", + "summary", + "category", + "target_version", + "status", + "reporter", + "handler", + "resolution", + "priority", + "severity", + "created_at", + "updated_at", + "relationships", + "tags", +} + func (d *Data) update() { - url := fmt.Sprintf("%s?project_id=%dfilter_id=%d&page_size=%d", - d.url, d.projectId, d.filterId, d.num) + url := fmt.Sprintf("%s/issues?project_id=%d&page_size=%d&%s&select=%s", + d.url, d.projectId, d.num, statusFilter, + strings.Join(fields, ",")) req, e := http.NewRequestWithContext(d.ctx, "GET", url, nil) if nil != e { d.mux.Lock() @@ -115,6 +135,23 @@ func (d *Data) update() { } } d.Issues = issues + fmt.Println("got", len(issues), "issues") +} + +func (d *Data) Loop() { + d.update() + go func() { + var ticker = time.NewTicker(d.Freq) + for range ticker.C { + select { + case <-d.ctx.Done(): + return + default: + fmt.Println("updating data") + d.update() + } + } + }() } func (d *Data) printJSON(w io.Writer) { @@ -31,12 +31,13 @@ import ( ) var ( - fl_url = flag.String("url", "https://bugs.gnunet.org/api/rest/issues", "URL to the issues") + 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", 100, "number of issues to retrieve at once") + fl_num = flag.Int("num", 250, "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") + fl_freq = flag.Duration("fr", time.Minute, "update frequency") + fl_proj = flag.Int("project", 23, "project id to use") ) func main() { @@ -45,24 +46,11 @@ func main() { var ctx = context.Background() var data = NewData(ctx, *fl_url, *fl_token, *fl_num) - data.filterId = 230 - data.projectId = 23 + data.projectId = *fl_proj 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() - } - } - }() + data.Loop() http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { log.Println("got request for table") |