fetcher refact
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user