From 1a5e2eda0f40ff60a57cc96506df71299f9dd1b1 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Sun, 23 Jan 2022 16:09:51 +0400 Subject: [PATCH] HTTP404HtmlResponse::operator+(UrlNotFoundMsg) --- src/server/internalServer.cpp | 20 -------------------- src/server/response.cpp | 11 +++++++++++ src/server/response.h | 6 ++++++ 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/src/server/internalServer.cpp b/src/server/internalServer.cpp index 597f52dbb..5f53b5d54 100644 --- a/src/server/internalServer.cpp +++ b/src/server/internalServer.cpp @@ -387,26 +387,6 @@ SuggestionsList_t getSuggestions(SuggestionSearcherCache& cache, const zim::Arch return suggestions; } -namespace -{ - -class UrlNotFoundMsg {}; - -const UrlNotFoundMsg urlNotFoundMsg; - -ContentResponseBlueprint&& operator+(ContentResponseBlueprint&& crb, - UrlNotFoundMsg /*unused*/) -{ - const std::string requestUrl = crb.m_request.get_full_url(); - kainjow::mustache::mustache msgTmpl(R"(The requested URL "{{url}}" was not found on this server.)"); - const auto urlNotFoundMsgText = msgTmpl.render({"url", requestUrl}); - crb.m_data["details"].push_back({"p", urlNotFoundMsgText}); - return std::move(crb); -} - - -} // unnamed namespace - std::unique_ptr InternalServer::handle_suggest(const RequestContext& request) { if (m_verbose.load()) { diff --git a/src/server/response.cpp b/src/server/response.cpp index 42175637c..f07a1e6d2 100644 --- a/src/server/response.cpp +++ b/src/server/response.cpp @@ -109,6 +109,8 @@ std::unique_ptr Response::build_404(const InternalServer& serve return response; } +extern const UrlNotFoundMsg urlNotFoundMsg; + HTTP404HtmlResponse::HTTP404HtmlResponse(const InternalServer& server, const RequestContext& request) : ContentResponseBlueprint(&server, @@ -121,6 +123,15 @@ HTTP404HtmlResponse::HTTP404HtmlResponse(const InternalServer& server, this->m_data = kainjow::mustache::object{{"details", emptyList}}; } +HTTP404HtmlResponse& HTTP404HtmlResponse::operator+(UrlNotFoundMsg /*unused*/) +{ + const std::string requestUrl = m_request.get_full_url(); + kainjow::mustache::mustache msgTmpl(R"(The requested URL "{{url}}" was not found on this server.)"); + const auto urlNotFoundMsgText = msgTmpl.render({"url", requestUrl}); + m_data["details"].push_back({"p", urlNotFoundMsgText}); + return *this; +} + std::unique_ptr Response::build_416(const InternalServer& server, size_t resourceLength) { auto response = Response::build(server); diff --git a/src/server/response.h b/src/server/response.h index fb7cf84b5..7826d3e72 100644 --- a/src/server/response.h +++ b/src/server/response.h @@ -175,10 +175,16 @@ public: //data kainjow::mustache::data m_data; }; +class UrlNotFoundMsg {}; + +extern const UrlNotFoundMsg urlNotFoundMsg; + struct HTTP404HtmlResponse : ContentResponseBlueprint { HTTP404HtmlResponse(const InternalServer& server, const RequestContext& request); + + HTTP404HtmlResponse& operator+(UrlNotFoundMsg /*unused*/); }; class ItemResponse : public Response {