Files
updater/lib/fetcher.grav.go
2026-07-02 20:03:20 +02:00

59 lines
1.0 KiB
Go

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("/custom/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
}