Extracted get_search_filter()

This commit is contained in:
Veloman Yunkan 2021-06-08 16:05:29 +04:00
parent 208dece7e3
commit 4aa3c792aa
1 changed files with 19 additions and 7 deletions

View File

@ -660,15 +660,14 @@ std::unique_ptr<Response> InternalServer::handle_catalog(const RequestContext& r
return std::move(response); return std::move(response);
} }
std::vector<std::string> namespace
InternalServer::search_catalog(const RequestContext& request, {
kiwix::OPDSDumper& opdsDumper)
Filter get_search_filter(const RequestContext& request)
{ {
auto filter = kiwix::Filter().valid(true).local(true); auto filter = kiwix::Filter().valid(true).local(true);
string query("<Empty query>");
try { try {
query = request.get_argument("q"); filter.query(request.get_argument("q"));
filter.query(query);
} catch (const std::out_of_range&) {} } catch (const std::out_of_range&) {}
try { try {
filter.maxSize(extractFromString<unsigned long>(request.get_argument("maxsize"))); filter.maxSize(extractFromString<unsigned long>(request.get_argument("maxsize")));
@ -688,7 +687,20 @@ InternalServer::search_catalog(const RequestContext& request,
try { try {
filter.rejectTags(kiwix::split(request.get_argument("notag"), ";")); filter.rejectTags(kiwix::split(request.get_argument("notag"), ";"));
} catch (...) {} } catch (...) {}
opdsDumper.setTitle("Search result for " + query); return filter;
}
} // unnamed namespace
std::vector<std::string>
InternalServer::search_catalog(const RequestContext& request,
kiwix::OPDSDumper& opdsDumper)
{
const auto filter = get_search_filter(request);
const std::string q = filter.hasQuery()
? filter.getQuery()
: "<Empty query>";
opdsDumper.setTitle("Search result for " + q);
std::vector<std::string> bookIdsToDump = mp_library->filter(filter); std::vector<std::string> bookIdsToDump = mp_library->filter(filter);
const auto totalResults = bookIdsToDump.size(); const auto totalResults = bookIdsToDump.size();
size_t count(10); size_t count(10);