refactoring
This commit is contained in:
@@ -1,44 +1,52 @@
|
||||
package lib
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type GiteaFetcher struct {
|
||||
URL string
|
||||
BaseURL string
|
||||
Token string
|
||||
Repos []string
|
||||
Cache *Cache
|
||||
}
|
||||
|
||||
func (f GiteaFetcher) Fetch() string {
|
||||
req, _ := http.NewRequest("GET", f.URL, nil)
|
||||
if f.Token != "" {
|
||||
req.Header.Set("Authorization", "token "+f.Token)
|
||||
}
|
||||
res, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
defer res.Body.Close()
|
||||
func (f GiteaFetcher) Fetch() []string {
|
||||
var messages []string
|
||||
|
||||
var r []struct {
|
||||
Sha string `json:"sha"`
|
||||
Commit struct {
|
||||
Message string `json:"message"`
|
||||
} `json:"commit"`
|
||||
HTMLURL string `json:"html_url"`
|
||||
}
|
||||
json.NewDecoder(res.Body).Decode(&r)
|
||||
if len(r) == 0 {
|
||||
return ""
|
||||
}
|
||||
c := r[0]
|
||||
for _, repo := range f.Repos {
|
||||
if repo == "" {
|
||||
continue
|
||||
}
|
||||
giteaURL := fmt.Sprintf("%s/api/v1/repos/%s/commits", f.BaseURL, strings.TrimSpace(repo))
|
||||
req, _ := http.NewRequest("GET", giteaURL, nil)
|
||||
if f.Token != "" {
|
||||
req.Header.Set("Authorization", "token "+f.Token)
|
||||
}
|
||||
|
||||
if f.Cache.TryUpdate("gitea_"+url.QueryEscape(f.URL), c.Sha) {
|
||||
return fmt.Sprintf("Gitea: %s <%s>", c.Commit.Message, c.HTMLURL)
|
||||
var r []struct {
|
||||
Sha string `json:"sha"`
|
||||
Commit struct {
|
||||
Message string `json:"message"`
|
||||
} `json:"commit"`
|
||||
HTMLURL string `json:"html_url"`
|
||||
}
|
||||
if err := getJSON(req, &r); err != nil {
|
||||
fmt.Printf("Error fetching Gitea repo %s: %v\n", repo, err)
|
||||
continue
|
||||
}
|
||||
|
||||
if len(r) == 0 {
|
||||
continue
|
||||
}
|
||||
c := r[0]
|
||||
|
||||
if f.Cache.TryUpdate("gitea_"+url.QueryEscape(giteaURL), c.Sha) {
|
||||
messages = append(messages, fmt.Sprintf("Gitea: %s <%s>", c.Commit.Message, c.HTMLURL))
|
||||
}
|
||||
}
|
||||
return ""
|
||||
return messages
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user