grav support
This commit is contained in:
@@ -15,6 +15,10 @@ GITEA_REPOS=org/repo1,org/repo2
|
||||
GITEA_CONTENT_LIMIT=10
|
||||
GITEA_DISCORD_WEBHOOK=
|
||||
|
||||
GRAV_BASE_URL=
|
||||
GRAV_CONTENT_LIMIT=10
|
||||
GRAV_DISCORD_WEBHOOK=
|
||||
|
||||
|
||||
DISCORD_WEBHOOK=
|
||||
|
||||
|
||||
@@ -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
58
lib/fetcher.grav.go
Normal 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
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user