more refact
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user