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] commit := r[0]
if f.Cache.TryUpdate("gitea_"+url.QueryEscape(giteaURL), commit.Sha) { 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 return messages

View File

@@ -14,14 +14,15 @@ type RedmineResponse struct {
} }
type RedmineFetcher struct { type RedmineFetcher struct {
Config Config BaseURL string
Cache *Cache Key string
Cache *Cache
} }
func (f RedmineFetcher) Fetch() []string { 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, _ := 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 var r RedmineResponse
@@ -35,8 +36,8 @@ func (f RedmineFetcher) Fetch() []string {
i := r.Issues[0] i := r.Issues[0]
if f.Cache.TryUpdate("redmine", i.UpdatedOn) { if f.Cache.TryUpdate("redmine", i.UpdatedOn) {
url := fmt.Sprintf("%s/issues/%d", f.Config.RedmineBaseURL, i.ID) 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{fmt.Sprintf("🎫 [Redmine] - #%d %s - %s", i.ID, i.Subject, url)}
} }
return []string{} return []string{}
} }

View File

@@ -19,15 +19,16 @@ type WikiResponse struct {
} }
type WikiFetcher struct { type WikiFetcher struct {
Config Config BaseURL string
Cache *Cache Token string
Cache *Cache
} }
func (f WikiFetcher) Fetch() []string { func (f WikiFetcher) Fetch() []string {
q := `{"query":"{ pages { list(orderBy: UPDATED, orderByDirection: DESC, limit: 1){ path, updatedAt, title }}}"}` 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, _ := 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") req.Header.Set("Content-Type", "application/json")
var r WikiResponse var r WikiResponse
@@ -41,8 +42,8 @@ func (f WikiFetcher) Fetch() []string {
} }
u := r.Data.Pages.List[0] u := r.Data.Pages.List[0]
if f.Cache.TryUpdate("wiki", u.UpdatedAt) { if f.Cache.TryUpdate("wiki", u.UpdatedAt) {
url := fmt.Sprintf("%s/%s", f.Config.WikiBaseURL, u.Path) url := fmt.Sprintf("%s/%s", f.BaseURL, u.Path)
return []string{fmt.Sprintf("Wiki: %s <%s>", u.Title, url)} return []string{fmt.Sprintf("📖 [WikiJS] - %s - %s", u.Title, url)}
} }
return []string{} 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 var fetchers []Fetcher
fetchers = append(fetchers, &GiteaFetcher{ fetchers = append(fetchers, &GiteaFetcher{
@@ -40,8 +40,16 @@ func getFetchers(config Config, cache *Cache) []Fetcher {
Cache: cache, Cache: cache,
}) })
fetchers = append(fetchers, &WikiFetcher{Config: config, Cache: cache}) fetchers = append(fetchers, &WikiFetcher{
fetchers = append(fetchers, &RedmineFetcher{Config: config, Cache: cache}) BaseURL: config.WikiBaseURL,
Token: config.WikiToken,
Cache: cache,
})
fetchers = append(fetchers, &RedmineFetcher{
BaseURL: config.RedmineBaseURL,
Key: config.RedmineKey,
Cache: cache,
})
return fetchers return fetchers
} }
@@ -53,7 +61,10 @@ func getCache() Cache {
} }
func getDiscordSender(config Config) DiscordSender { func getDiscordSender(config Config) DiscordSender {
return DiscordSender{Config: config} return DiscordSender{
Webhook: config.DiscordWebhook,
Fake: config.DiscordFake,
}
} }
func getMessages(fetchers []Fetcher) []string { func getMessages(fetchers []Fetcher) []string {
@@ -76,7 +87,7 @@ func Runner() {
config := getConfig() config := getConfig()
cache := getCache() cache := getCache()
discord_sender := getDiscordSender(config) discord_sender := getDiscordSender(config)
fetchers := getFetchers(config, &cache) fetchers := getFetchers(&config, &cache)
for { for {
log.Println("Run updater...") log.Println("Run updater...")
messages := getMessages(fetchers) messages := getMessages(fetchers)

View File

@@ -7,15 +7,16 @@ import (
) )
type DiscordSender struct { type DiscordSender struct {
Config Config Webhook string
Fake bool
} }
func (d DiscordSender) Send(msg string) { func (d DiscordSender) Send(msg string) {
b, _ := json.Marshal(map[string]string{"content": msg}) b, _ := json.Marshal(map[string]string{"content": msg})
if d.Config.DiscordFake { if d.Fake {
return 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) { func (d DiscordSender) SendBatch(msgs []string) {