more refact

This commit is contained in:
2026-01-19 21:55:50 +01:00
parent 64750ef1c2
commit ee6dfca55f
3 changed files with 44 additions and 30 deletions

View File

@@ -35,7 +35,6 @@ func (f GiteaFetcher) Fetch() []string {
HTMLURL string `json:"html_url"` HTMLURL string `json:"html_url"`
} }
if err := getJSON(req, &r); err != nil { if err := getJSON(req, &r); err != nil {
fmt.Printf("Error fetching Gitea repo %s: %v\n", repo, err)
continue continue
} }

View File

@@ -1,7 +1,6 @@
package lib package lib
import ( import (
"fmt"
"log" "log"
"os" "os"
"strconv" "strconv"
@@ -11,17 +10,13 @@ import (
"github.com/joho/godotenv" "github.com/joho/godotenv"
) )
func Runner() { func getConfig() Config {
if err := godotenv.Load(); err != nil {
log.Println("Warning: .env file not found, using environment variables")
}
intervalMinutes, err := strconv.Atoi(os.Getenv("INTERVAL_MINUTES")) intervalMinutes, err := strconv.Atoi(os.Getenv("INTERVAL_MINUTES"))
if err != nil { if err != nil {
intervalMinutes = 5 intervalMinutes = 5
} }
config := Config{ return Config{
WikiBaseURL: os.Getenv("WIKI_BASE_URL"), WikiBaseURL: os.Getenv("WIKI_BASE_URL"),
WikiToken: os.Getenv("WIKI_TOKEN"), WikiToken: os.Getenv("WIKI_TOKEN"),
RedmineBaseURL: os.Getenv("REDMINE_BASE_URL"), RedmineBaseURL: os.Getenv("REDMINE_BASE_URL"),
@@ -32,32 +27,54 @@ func Runner() {
Webhook: os.Getenv("DISCORD_WEBHOOK"), Webhook: os.Getenv("DISCORD_WEBHOOK"),
Interval: time.Duration(intervalMinutes) * time.Minute, Interval: time.Duration(intervalMinutes) * time.Minute,
} }
}
cache := Cache{} func getFetchers(config Config, cache *Cache) []Fetcher {
cache.Load()
discord := DiscordSender{Config: config}
var fetchers []Fetcher var fetchers []Fetcher
fetchers = append(fetchers, &GiteaFetcher{ fetchers = append(fetchers, &GiteaFetcher{
BaseURL: config.GiteaBaseURL, BaseURL: config.GiteaBaseURL,
Token: config.GiteaToken, Token: config.GiteaToken,
Repos: config.GiteaRepos, Repos: config.GiteaRepos,
Cache: &cache, Cache: cache,
}) })
fetchers = append(fetchers, &WikiFetcher{Config: config, Cache: &cache}) fetchers = append(fetchers, &WikiFetcher{Config: config, Cache: cache})
fetchers = append(fetchers, &RedmineFetcher{Config: config, Cache: &cache}) fetchers = append(fetchers, &RedmineFetcher{Config: config, Cache: cache})
return fetchers
}
func getCache() Cache {
cache := Cache{}
cache.Load()
return cache
}
func getDiscordSender(config Config) DiscordSender {
return DiscordSender{Config: config}
}
func Runner() {
if err := godotenv.Load(); err != nil {
log.Println("Warning: .env file not found, using environment variables")
}
config := getConfig()
cache := getCache()
discord_sender := getDiscordSender(config)
fetchers := getFetchers(config, &cache)
messages := []string{}
for { for {
fmt.Println("Update") log.Println("Run updater...")
for _, f := range fetchers { for _, fetcher := range fetchers {
if msg := f.Fetch(); len(msg) > 0 { fetcher_messages := fetcher.Fetch()
for _, m := range msg { messages = append(messages, fetcher_messages...)
fmt.Println("Sending:", m)
discord.Send(m)
}
} }
for _, message := range messages {
log.Println("Send message: ", message)
discord_sender.Send(message)
} }
cache.Save() cache.Save()

View File

@@ -3,7 +3,6 @@ package lib
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt"
"net/http" "net/http"
) )
@@ -12,7 +11,6 @@ type DiscordSender struct {
} }
func (d DiscordSender) Send(msg string) { func (d DiscordSender) Send(msg string) {
fmt.Printf("Send to Discord: %s\n", msg)
b, _ := json.Marshal(map[string]string{"content": msg}) b, _ := json.Marshal(map[string]string{"content": msg})
http.Post(d.Config.Webhook, "application/json", bytes.NewBuffer(b)) http.Post(d.Config.Webhook, "application/json", bytes.NewBuffer(b))
} }