find method
- SearchRequest searchRequest
Returns a List of books based on a search request.
Implementation
Future<List<Book>> find(SearchRequest searchRequest) async {
try {
final searchTermQuery = '&q=${searchRequest.query}';
final author = searchRequest.author.replaceAll(',', '');
final authorQuery = '&termtype_1=author&termval_1=$author';
final filtersQuery = _buildFiltersQuery(searchRequest);
final url =
'$baseUrl/search?index=&page=1$searchTermQuery$authorQuery$filtersQuery';
final soup = await cookSoup(Uri.encodeFull(url));
final resultCount = _getAnnaResultCount(soup);
if (resultCount == null || resultCount == 0) {
return [];
}
final books = soup.findAll(
'div',
class_: 'h-[125px] flex flex-col justify-center',
limit: resultCount < searchRequest.limit
? resultCount
: searchRequest.limit,
);
return convertListToModelWithErrorCount<Book>(
[...books],
getBookfromAnna,
).results;
} catch (e) {
throw Exception('Error finding books');
}
}