diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index c3740ec5f..a725674d4 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -95,6 +95,40 @@ inline std::string normalizeRootUrl(std::string rootUrl) return rootUrl.empty() ? rootUrl : "/" + rootUrl; } +Filter get_search_filter(const RequestContext& request) +{ + auto filter = kiwix::Filter().valid(true).local(true); + try { + filter.query(request.get_argument("q")); + } catch (const std::out_of_range&) {} + try { + filter.maxSize(request.get_argument("maxsize")); + } catch (...) {} + try { + filter.name(request.get_argument("name")); + } catch (const std::out_of_range&) {} + try { + filter.category(request.get_argument("category")); + } catch (const std::out_of_range&) {} + try { + filter.lang(request.get_argument("lang")); + } catch (const std::out_of_range&) {} + try { + filter.acceptTags(kiwix::split(request.get_argument("tag"), ";")); + } catch (...) {} + try { + filter.rejectTags(kiwix::split(request.get_argument("notag"), ";")); + } catch (...) {} + return filter; +} + +template +std::vector subrange(const std::vector& v, size_t s, size_t n) +{ + const size_t e = std::min(v.size(), s+n); + return std::vector(v.begin()+std::min(v.size(), s), v.begin()+e); +} + } // unnamed namespace SearchInfo::SearchInfo(const std::string& pattern) @@ -764,45 +798,6 @@ std::unique_ptr InternalServer::handle_catalog(const RequestContext& r return std::move(response); } -namespace -{ - -Filter get_search_filter(const RequestContext& request) -{ - auto filter = kiwix::Filter().valid(true).local(true); - try { - filter.query(request.get_argument("q")); - } catch (const std::out_of_range&) {} - try { - filter.maxSize(request.get_argument("maxsize")); - } catch (...) {} - try { - filter.name(request.get_argument("name")); - } catch (const std::out_of_range&) {} - try { - filter.category(request.get_argument("category")); - } catch (const std::out_of_range&) {} - try { - filter.lang(request.get_argument("lang")); - } catch (const std::out_of_range&) {} - try { - filter.acceptTags(kiwix::split(request.get_argument("tag"), ";")); - } catch (...) {} - try { - filter.rejectTags(kiwix::split(request.get_argument("notag"), ";")); - } catch (...) {} - return filter; -} - -template -std::vector subrange(const std::vector& v, size_t s, size_t n) -{ - const size_t e = std::min(v.size(), s+n); - return std::vector(v.begin()+std::min(v.size(), s), v.begin()+e); -} - -} // unnamed namespace - std::vector InternalServer::search_catalog(const RequestContext& request, kiwix::OPDSDumper& opdsDumper)