fetcher refact

This commit is contained in:
Zsolt Tasnadi
2026-01-20 08:39:02 +01:00
parent 6be44be9bf
commit 4f168197b8
5 changed files with 113 additions and 79 deletions

View File

@@ -18,13 +18,15 @@ type WikiResponse struct {
}
type WikiFetcher struct {
BaseURL string
Token string
Cache *Cache
BaseFetcher
}
func (f WikiFetcher) Fetch() []Entry {
q := `{"query":"{ pages { list(orderBy: UPDATED, orderByDirection: DESC, limit: 1){ path, updatedAt, title }}}"}`
func (f *WikiFetcher) Name() string {
return "WikiJS"
}
func (f *WikiFetcher) Fetch() []Entry {
query := `{"query":"{ pages { list(orderBy: UPDATED, orderByDirection: DESC, limit: 1){ path, updatedAt, title }}}"}`
req := FetcherRequest{
BaseURL: f.BaseURL,
@@ -34,25 +36,28 @@ func (f WikiFetcher) Fetch() []Entry {
"Authorization": "Bearer " + f.Token,
"Content-Type": "application/json",
},
Body: []byte(q),
Body: []byte(query),
}
var r WikiResponse
if err := req.Run(&r); err != nil {
return []Entry{}
var resp WikiResponse
if err := req.Run(&resp); err != nil {
return nil
}
if len(r.Data.Pages.List) == 0 {
return []Entry{}
if len(resp.Data.Pages.List) == 0 {
return nil
}
u := r.Data.Pages.List[0]
if f.Cache.TryUpdate("wiki", u.UpdatedAt) {
url := fmt.Sprintf("%s/%s", f.BaseURL, u.Path)
return []Entry{{
Title: fmt.Sprintf("📖 [WikiJS] - %s", u.Title),
URL: url,
}}
page := resp.Data.Pages.List[0]
entry := f.TryCreateEntry(
"wiki",
page.UpdatedAt,
fmt.Sprintf("📖 [%s] - %s", f.Name(), page.Title),
fmt.Sprintf("%s/%s", f.BaseURL, page.Path),
)
if entry != nil {
return []Entry{*entry}
}
return []Entry{}
return nil
}