From 4aa3c792aa388436fecf42c16a8e0bb938c4642e Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Tue, 8 Jun 2021 16:05:29 +0400 Subject: [PATCH] Extracted get_search_filter() --- src/server/internalServer.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index 99be804a..8aa6ce78 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -660,15 +660,14 @@ std::unique_ptr InternalServer::handle_catalog(const RequestContext& r return std::move(response); } -std::vector -InternalServer::search_catalog(const RequestContext& request, - kiwix::OPDSDumper& opdsDumper) +namespace +{ + +Filter get_search_filter(const RequestContext& request) { auto filter = kiwix::Filter().valid(true).local(true); - string query(""); try { - query = request.get_argument("q"); - filter.query(query); + filter.query(request.get_argument("q")); } catch (const std::out_of_range&) {} try { filter.maxSize(extractFromString(request.get_argument("maxsize"))); @@ -688,7 +687,20 @@ InternalServer::search_catalog(const RequestContext& request, try { filter.rejectTags(kiwix::split(request.get_argument("notag"), ";")); } catch (...) {} - opdsDumper.setTitle("Search result for " + query); + return filter; +} + +} // unnamed namespace + +std::vector +InternalServer::search_catalog(const RequestContext& request, + kiwix::OPDSDumper& opdsDumper) +{ + const auto filter = get_search_filter(request); + const std::string q = filter.hasQuery() + ? filter.getQuery() + : ""; + opdsDumper.setTitle("Search result for " + q); std::vector bookIdsToDump = mp_library->filter(filter); const auto totalResults = bookIdsToDump.size(); size_t count(10);