grav support

This commit is contained in:
2026-06-09 18:33:51 +02:00
parent 1d4fa7898c
commit bd4981aadb
4 changed files with 78 additions and 0 deletions

View File

@@ -23,6 +23,9 @@ type Config struct {
GiteaRepos []string
GiteaContentLimit int
GiteaDiscordWebhook string
GravBaseURL string
GravContentLimit int
GravDiscordWebhook string
DiscordWebhook string
DiscordFake bool
Interval time.Duration

58
lib/fetcher.grav.go Normal file
View File

@@ -0,0 +1,58 @@
package lib
import (
"fmt"
"net/http"
"strconv"
)
type GravResponse struct {
Pages []struct {
Route string `json:"route"`
Title string `json:"title"`
Modified int64 `json:"modified"`
} `json:"pages"`
}
type GravFetcher struct {
BaseFetcher
}
func (f *GravFetcher) Name() string {
return "Grav"
}
func (f *GravFetcher) Fetch() []Message {
var messages []Message
req := FetcherRequest{
BaseURL: f.BaseURL,
Path: fmt.Sprintf("/api/updates.json?limit=%d", f.ContentLimit),
Method: http.MethodGet,
}
var response GravResponse
if err := req.Run(&response); err != nil {
return nil
}
if len(response.Pages) == 0 {
return nil
}
for _, content := range response.Pages {
message := f.TryCreateMessage(
"grav",
"grav_"+content.Route,
strconv.FormatInt(content.Modified, 10),
fmt.Sprintf("📖 [%s] - %s", f.Name(), content.Title),
fmt.Sprintf("%s%s", f.BaseURL, content.Route),
)
if message != nil {
messages = append(messages, *message)
}
}
return messages
}

View File

@@ -22,6 +22,9 @@ func getConfig() Config {
GiteaRepos: strings.Split(os.Getenv("GITEA_REPOS"), ","),
GiteaContentLimit: envToInteger("GITEA_CONTENT_LIMIT", 10),
GiteaDiscordWebhook: os.Getenv("GITEA_DISCORD_WEBHOOK"),
GravBaseURL: os.Getenv("GRAV_BASE_URL"),
GravContentLimit: envToInteger("GRAV_CONTENT_LIMIT", 10),
GravDiscordWebhook: os.Getenv("GRAV_DISCORD_WEBHOOK"),
DiscordWebhook: os.Getenv("DISCORD_WEBHOOK"),
DiscordFake: os.Getenv("DISCORD_FAKE") == "true",
Interval: time.Duration(envToInteger("INTERVAL_MINUTES", 5)) * time.Minute,
@@ -55,6 +58,13 @@ func getFetchers(config *Config, cache *Cache) []Fetcher {
ContentLimit: config.RedmineContentLimit,
},
},
&GravFetcher{
BaseFetcher: BaseFetcher{
BaseURL: config.GravBaseURL,
Cache: cache,
ContentLimit: config.GravContentLimit,
},
},
}
}
@@ -93,6 +103,7 @@ func Runner() {
wiki_discord_sender := NewDiscordSender(config.WikiDiscordWebhook, config.DiscordFake)
redmine_discord_sender := NewDiscordSender(config.RedmineDiscordWebhook, config.DiscordFake)
gita_discord_sender := NewDiscordSender(config.GiteaDiscordWebhook, config.DiscordFake)
grav_discord_sender := NewDiscordSender(config.GravDiscordWebhook, config.DiscordFake)
for {
log.Println("[SCHEDULED] Run updater...")
messages := getMessages(fetchers)
@@ -104,6 +115,8 @@ func Runner() {
sendMessageToDiscord(redmine_discord_sender, message)
case "gitea":
sendMessageToDiscord(gita_discord_sender, message)
case "grav":
sendMessageToDiscord(grav_discord_sender, message)
default:
sendMessageToDiscord(default_discord_sender, message)
}