package lib import ( "fmt" "net/http" ) type RedmineResponse struct { Issues []struct { ID int UpdatedOn string Subject string } } type RedmineFetcher struct { Config Config Cache *Cache } func (f RedmineFetcher) Fetch() []string { redmineURL := fmt.Sprintf("%s/issues.json", f.Config.RedmineBaseURL) req, _ := http.NewRequest("GET", redmineURL, nil) req.Header.Set("X-Redmine-API-Key", f.Config.RedmineKey) var r RedmineResponse if err := getJSON(req, &r); err != nil { return []string{} } if len(r.Issues) == 0 { return []string{} } i := r.Issues[0] if f.Cache.TryUpdate("redmine", i.UpdatedOn) { url := fmt.Sprintf("%s/issues/%d", f.Config.RedmineBaseURL, i.ID) return []string{fmt.Sprintf("Redmine: #%d %s <%s>", i.ID, i.Subject, url)} } return []string{} }