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

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

View File

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

View File

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