grav support
This commit is contained in:
@@ -15,6 +15,10 @@ GITEA_REPOS=org/repo1,org/repo2
|
|||||||
GITEA_CONTENT_LIMIT=10
|
GITEA_CONTENT_LIMIT=10
|
||||||
GITEA_DISCORD_WEBHOOK=
|
GITEA_DISCORD_WEBHOOK=
|
||||||
|
|
||||||
|
GRAV_BASE_URL=
|
||||||
|
GRAV_CONTENT_LIMIT=10
|
||||||
|
GRAV_DISCORD_WEBHOOK=
|
||||||
|
|
||||||
|
|
||||||
DISCORD_WEBHOOK=
|
DISCORD_WEBHOOK=
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ type Config struct {
|
|||||||
GiteaRepos []string
|
GiteaRepos []string
|
||||||
GiteaContentLimit int
|
GiteaContentLimit int
|
||||||
GiteaDiscordWebhook string
|
GiteaDiscordWebhook string
|
||||||
|
GravBaseURL string
|
||||||
|
GravContentLimit int
|
||||||
|
GravDiscordWebhook string
|
||||||
DiscordWebhook string
|
DiscordWebhook string
|
||||||
DiscordFake bool
|
DiscordFake bool
|
||||||
Interval time.Duration
|
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"), ","),
|
GiteaRepos: strings.Split(os.Getenv("GITEA_REPOS"), ","),
|
||||||
GiteaContentLimit: envToInteger("GITEA_CONTENT_LIMIT", 10),
|
GiteaContentLimit: envToInteger("GITEA_CONTENT_LIMIT", 10),
|
||||||
GiteaDiscordWebhook: os.Getenv("GITEA_DISCORD_WEBHOOK"),
|
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"),
|
DiscordWebhook: os.Getenv("DISCORD_WEBHOOK"),
|
||||||
DiscordFake: os.Getenv("DISCORD_FAKE") == "true",
|
DiscordFake: os.Getenv("DISCORD_FAKE") == "true",
|
||||||
Interval: time.Duration(envToInteger("INTERVAL_MINUTES", 5)) * time.Minute,
|
Interval: time.Duration(envToInteger("INTERVAL_MINUTES", 5)) * time.Minute,
|
||||||
@@ -55,6 +58,13 @@ func getFetchers(config *Config, cache *Cache) []Fetcher {
|
|||||||
ContentLimit: config.RedmineContentLimit,
|
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)
|
wiki_discord_sender := NewDiscordSender(config.WikiDiscordWebhook, config.DiscordFake)
|
||||||
redmine_discord_sender := NewDiscordSender(config.RedmineDiscordWebhook, config.DiscordFake)
|
redmine_discord_sender := NewDiscordSender(config.RedmineDiscordWebhook, config.DiscordFake)
|
||||||
gita_discord_sender := NewDiscordSender(config.GiteaDiscordWebhook, config.DiscordFake)
|
gita_discord_sender := NewDiscordSender(config.GiteaDiscordWebhook, config.DiscordFake)
|
||||||
|
grav_discord_sender := NewDiscordSender(config.GravDiscordWebhook, config.DiscordFake)
|
||||||
for {
|
for {
|
||||||
log.Println("[SCHEDULED] Run updater...")
|
log.Println("[SCHEDULED] Run updater...")
|
||||||
messages := getMessages(fetchers)
|
messages := getMessages(fetchers)
|
||||||
@@ -104,6 +115,8 @@ func Runner() {
|
|||||||
sendMessageToDiscord(redmine_discord_sender, message)
|
sendMessageToDiscord(redmine_discord_sender, message)
|
||||||
case "gitea":
|
case "gitea":
|
||||||
sendMessageToDiscord(gita_discord_sender, message)
|
sendMessageToDiscord(gita_discord_sender, message)
|
||||||
|
case "grav":
|
||||||
|
sendMessageToDiscord(grav_discord_sender, message)
|
||||||
default:
|
default:
|
||||||
sendMessageToDiscord(default_discord_sender, message)
|
sendMessageToDiscord(default_discord_sender, message)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user