more tweaks

This commit is contained in:
2026-01-20 00:55:17 +01:00
parent 43e9b2b993
commit 8bd16b99f0
5 changed files with 35 additions and 21 deletions

View File

@@ -48,7 +48,7 @@ func (f GiteaFetcher) Fetch() []string {
commit := r[0]
if f.Cache.TryUpdate("gitea_"+url.QueryEscape(giteaURL), commit.Sha) {
messages = append(messages, fmt.Sprintf("Gitea: %s <%s>", commit.Commit.Message, commit.HTMLURL))
messages = append(messages, fmt.Sprintf("📝 [Gitea] - (%s) %s - %s", repo, commit.Commit.Message, commit.HTMLURL))
}
}
return messages

View File

@@ -14,14 +14,15 @@ type RedmineResponse struct {
}
type RedmineFetcher struct {
Config Config
BaseURL string
Key string
Cache *Cache
}
func (f RedmineFetcher) Fetch() []string {
redmineURL := fmt.Sprintf("%s/issues.json", f.Config.RedmineBaseURL)
redmineURL := fmt.Sprintf("%s/issues.json", f.BaseURL)
req, _ := http.NewRequest("GET", redmineURL, nil)
req.Header.Set("X-Redmine-API-Key", f.Config.RedmineKey)
req.Header.Set("X-Redmine-API-Key", f.Key)
var r RedmineResponse
@@ -35,8 +36,8 @@ func (f RedmineFetcher) Fetch() []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)}
url := fmt.Sprintf("%s/issues/%d", f.BaseURL, i.ID)
return []string{fmt.Sprintf("🎫 [Redmine] - #%d %s - %s", i.ID, i.Subject, url)}
}
return []string{}
}

View File

@@ -19,15 +19,16 @@ type WikiResponse struct {
}
type WikiFetcher struct {
Config Config
BaseURL string
Token string
Cache *Cache
}
func (f WikiFetcher) Fetch() []string {
q := `{"query":"{ pages { list(orderBy: UPDATED, orderByDirection: DESC, limit: 1){ path, updatedAt, title }}}"}`
wikiURL := fmt.Sprintf("%s/graphql", f.Config.WikiBaseURL)
wikiURL := fmt.Sprintf("%s/graphql", f.BaseURL)
req, _ := http.NewRequest("POST", wikiURL, bytes.NewBuffer([]byte(q)))
req.Header.Set("Authorization", "Bearer "+f.Config.WikiToken)
req.Header.Set("Authorization", "Bearer "+f.Token)
req.Header.Set("Content-Type", "application/json")
var r WikiResponse
@@ -41,8 +42,8 @@ func (f WikiFetcher) Fetch() []string {
}
u := r.Data.Pages.List[0]
if f.Cache.TryUpdate("wiki", u.UpdatedAt) {
url := fmt.Sprintf("%s/%s", f.Config.WikiBaseURL, u.Path)
return []string{fmt.Sprintf("Wiki: %s <%s>", u.Title, url)}
url := fmt.Sprintf("%s/%s", f.BaseURL, u.Path)
return []string{fmt.Sprintf("📖 [WikiJS] - %s - %s", u.Title, url)}
}
return []string{}
}

View File

@@ -30,7 +30,7 @@ func getConfig() Config {
}
}
func getFetchers(config Config, cache *Cache) []Fetcher {
func getFetchers(config *Config, cache *Cache) []Fetcher {
var fetchers []Fetcher
fetchers = append(fetchers, &GiteaFetcher{
@@ -40,8 +40,16 @@ func getFetchers(config Config, cache *Cache) []Fetcher {
Cache: cache,
})
fetchers = append(fetchers, &WikiFetcher{Config: config, Cache: cache})
fetchers = append(fetchers, &RedmineFetcher{Config: config, Cache: cache})
fetchers = append(fetchers, &WikiFetcher{
BaseURL: config.WikiBaseURL,
Token: config.WikiToken,
Cache: cache,
})
fetchers = append(fetchers, &RedmineFetcher{
BaseURL: config.RedmineBaseURL,
Key: config.RedmineKey,
Cache: cache,
})
return fetchers
}
@@ -53,7 +61,10 @@ func getCache() Cache {
}
func getDiscordSender(config Config) DiscordSender {
return DiscordSender{Config: config}
return DiscordSender{
Webhook: config.DiscordWebhook,
Fake: config.DiscordFake,
}
}
func getMessages(fetchers []Fetcher) []string {
@@ -76,7 +87,7 @@ func Runner() {
config := getConfig()
cache := getCache()
discord_sender := getDiscordSender(config)
fetchers := getFetchers(config, &cache)
fetchers := getFetchers(&config, &cache)
for {
log.Println("Run updater...")
messages := getMessages(fetchers)

View File

@@ -7,15 +7,16 @@ import (
)
type DiscordSender struct {
Config Config
Webhook string
Fake bool
}
func (d DiscordSender) Send(msg string) {
b, _ := json.Marshal(map[string]string{"content": msg})
if d.Config.DiscordFake {
if d.Fake {
return
}
http.Post(d.Config.DiscordWebhook, "application/json", bytes.NewBuffer(b))
http.Post(d.Webhook, "application/json", bytes.NewBuffer(b))
}
func (d DiscordSender) SendBatch(msgs []string) {