Add `/catalog/v2/illustration` endpoint

This commit is contained in:
Matthieu Gautier 2021-11-17 15:12:20 +01:00
parent 9482bfb95b
commit e108fb0e47
3 changed files with 19 additions and 0 deletions

View File

@ -82,6 +82,7 @@ class InternalServer {
std::unique_ptr<Response> handle_catalog_v2_complete_entry(const RequestContext& request, const std::string& entryId);
std::unique_ptr<Response> handle_catalog_v2_categories(const RequestContext& request);
std::unique_ptr<Response> handle_catalog_v2_languages(const RequestContext& request);
std::unique_ptr<Response> handle_catalog_v2_illustration(const RequestContext& request);
std::unique_ptr<Response> handle_meta(const RequestContext& request);
std::unique_ptr<Response> handle_search(const RequestContext& request);
std::unique_ptr<Response> handle_suggest(const RequestContext& request);

View File

@ -66,6 +66,8 @@ std::unique_ptr<Response> InternalServer::handle_catalog_v2(const RequestContext
return handle_catalog_v2_categories(request);
} else if (url == "languages") {
return handle_catalog_v2_languages(request);
} else if (url == "illustration") {
return handle_catalog_v2_illustration(request);
} else {
return Response::build_404(*this, request.get_full_url(), "", "");
}
@ -146,4 +148,18 @@ std::unique_ptr<Response> InternalServer::handle_catalog_v2_languages(const Requ
);
}
std::unique_ptr<Response> InternalServer::handle_catalog_v2_illustration(const RequestContext& request)
{
try {
const auto bookName = request.get_url_part(3);
const auto bookId = mp_nameMapper->getIdForName(bookName);
auto book = mp_library->getBookByIdThreadSafe(bookId);
auto size = request.get_argument<unsigned int>("size");
auto illustration = book.getIllustration(size);
return ContentResponse::build(*this, illustration->getData(), illustration->mimeType);
} catch(...) {
return Response::build_404(*this, request.get_full_url(), "", "");
}
}
} // namespace kiwix

View File

@ -201,6 +201,7 @@ const ResourceCollection resources200Uncompressible{
{ WITH_ETAG, "/ROOT/meta?content=zimfile&name=publisher" },
{ WITH_ETAG, "/ROOT/meta?content=zimfile&name=favicon" },
{ WITH_ETAG, "/ROOT/meta?content=zimfile&name=Illustration_48x48@1" },
{ NO_ETAG, "/ROOT/catalog/v2/illustration/zimfile?size=48" },
{ WITH_ETAG, "/ROOT/zimfile/I/m/Ray_Charles_classic_piano_pose.jpg" },
@ -276,6 +277,7 @@ const char* urls404[] = {
"/ROOT/catalog",
"/ROOT/catalog/non-existent-item",
"/ROOT/catalogBLABLABLA/root.xml",
"/ROOT/catalog/v2/illustration/zimfile?size=96",
"/ROOT/meta",
"/ROOT/meta?content=zimfile",
"/ROOT/meta?content=zimfile&name=non-existent-item",