32 lines
921 B
Go
32 lines
921 B
Go
package openlibrary
|
|
|
|
import "git.artlef.fr/PersonalLibraryManager/internal/callapiutils"
|
|
|
|
type OpenLibrarySearchResult struct {
|
|
Books []OpenLibrarySearchBook `json:"docs"`
|
|
NumFound int `json:"numFound"`
|
|
}
|
|
|
|
type OpenLibrarySearchBook struct {
|
|
Title string `json:"title"`
|
|
Authors []string `json:"author_name"`
|
|
OpenLibraryId string `json:"cover_edition_key"`
|
|
}
|
|
|
|
func CallOpenLibrarySearch(searchterm string, limit int, offset int) (OpenLibrarySearchResult, error) {
|
|
var queryResult OpenLibrarySearchResult
|
|
u, err := computeOpenLibraryUrl("search.json")
|
|
if err != nil {
|
|
return queryResult, err
|
|
}
|
|
if limit != 0 {
|
|
callapiutils.AddQueryParamInt(u, "limit", limit)
|
|
}
|
|
if offset != 0 {
|
|
callapiutils.AddQueryParamInt(u, "offset", offset)
|
|
}
|
|
callapiutils.AddQueryParam(u, "q", searchterm)
|
|
err = callapiutils.FetchAndParseResult(u, &queryResult)
|
|
return queryResult, err
|
|
}
|