Files
bibliomane/internal/openlibrary/openlibrarysearch.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
}