Files
updater/lib/fetcher.wikijs.go
2026-01-20 00:55:17 +01:00

50 lines
1.0 KiB
Go

package lib
import (
"bytes"
"fmt"
"net/http"
)
type WikiResponse struct {
Data struct {
Pages struct {
List []struct {
UpdatedAt string
Title string
Path string
}
}
}
}
type WikiFetcher struct {
BaseURL string
Token string
Cache *Cache
}
func (f WikiFetcher) Fetch() []string {
q := `{"query":"{ pages { list(orderBy: UPDATED, orderByDirection: DESC, limit: 1){ path, updatedAt, title }}}"}`
wikiURL := fmt.Sprintf("%s/graphql", f.BaseURL)
req, _ := http.NewRequest("POST", wikiURL, bytes.NewBuffer([]byte(q)))
req.Header.Set("Authorization", "Bearer "+f.Token)
req.Header.Set("Content-Type", "application/json")
var r WikiResponse
if err := getJSON(req, &r); err != nil {
return []string{}
}
if len(r.Data.Pages.List) == 0 {
return []string{}
}
u := r.Data.Pages.List[0]
if f.Cache.TryUpdate("wiki", u.UpdatedAt) {
url := fmt.Sprintf("%s/%s", f.BaseURL, u.Path)
return []string{fmt.Sprintf("📖 [WikiJS] - %s - %s", u.Title, url)}
}
return []string{}
}