mirror of https://github.com/kiwix/libkiwix.git
Changed the signature of Response::build_404()
Now Response::build_404() takes the URL instead of the entire RequestContext object. An empty url suppresses the The requested URL "url" was not found on this server. part of the error text.
This commit is contained in:
parent
f7b853373c
commit
d8c525289b
|
@ -271,7 +271,7 @@ std::unique_ptr<Response> InternalServer::handle_request(const RequestContext& r
|
|||
{
|
||||
try {
|
||||
if (! request.is_valid_url())
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
|
||||
const ETag etag = get_matching_if_none_match_etag(request);
|
||||
if ( etag )
|
||||
|
@ -394,11 +394,11 @@ std::unique_ptr<Response> InternalServer::handle_meta(const RequestContext& requ
|
|||
meta_name = request.get_argument("name");
|
||||
archive = mp_library->getArchiveById(bookId);
|
||||
} catch (const std::out_of_range& e) {
|
||||
return Response::build_404(*this, request, bookName, "");
|
||||
// error handled by the archive == nullptr check below
|
||||
}
|
||||
|
||||
if (archive == nullptr) {
|
||||
return Response::build_404(*this, request, bookName, "");
|
||||
return Response::build_404(*this, request.get_full_url(), bookName, "");
|
||||
}
|
||||
|
||||
std::string content;
|
||||
|
@ -425,7 +425,7 @@ std::unique_ptr<Response> InternalServer::handle_meta(const RequestContext& requ
|
|||
} else if (const unsigned illustrationSize = parseIllustration(meta_name)) {
|
||||
getArchiveFavicon(*archive, illustrationSize, content, mimeType);
|
||||
} else {
|
||||
return Response::build_404(*this, request, bookName, "");
|
||||
return Response::build_404(*this, request.get_full_url(), bookName, "");
|
||||
}
|
||||
|
||||
auto response = ContentResponse::build(*this, content, mimeType);
|
||||
|
@ -452,7 +452,7 @@ std::unique_ptr<Response> InternalServer::handle_suggest(const RequestContext& r
|
|||
queryString = request.get_argument("term");
|
||||
archive = mp_library->getArchiveById(bookId);
|
||||
} catch (const std::out_of_range&) {
|
||||
return Response::build_404(*this, request, bookName, "");
|
||||
return Response::build_404(*this, "", bookName, "");
|
||||
}
|
||||
|
||||
auto start = 0;
|
||||
|
@ -470,7 +470,7 @@ std::unique_ptr<Response> InternalServer::handle_suggest(const RequestContext& r
|
|||
}
|
||||
|
||||
if (archive == nullptr) {
|
||||
return Response::build_404(*this, request, bookName, "");
|
||||
return Response::build_404(*this, "", bookName, "");
|
||||
}
|
||||
|
||||
if (m_verbose.load()) {
|
||||
|
@ -532,7 +532,7 @@ std::unique_ptr<Response> InternalServer::handle_skin(const RequestContext& requ
|
|||
response->set_cacheable();
|
||||
return std::move(response);
|
||||
} catch (const ResourceNotFound& e) {
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -673,7 +673,7 @@ std::unique_ptr<Response> InternalServer::handle_random(const RequestContext& re
|
|||
|
||||
if (archive == nullptr) {
|
||||
const std::string error_details = "No such book: " + bookName;
|
||||
return Response::build_404(*this, request, bookName, "", error_details);
|
||||
return Response::build_404(*this, "", bookName, "", error_details);
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -681,7 +681,7 @@ std::unique_ptr<Response> InternalServer::handle_random(const RequestContext& re
|
|||
return build_redirect(bookName, getFinalItem(*archive, entry));
|
||||
} catch(zim::EntryNotFound& e) {
|
||||
const std::string error_details = "Oops! Failed to pick a random article :(";
|
||||
return Response::build_404(*this, request, bookName, getArchiveTitle(*archive), error_details);
|
||||
return Response::build_404(*this, "", bookName, getArchiveTitle(*archive), error_details);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -693,7 +693,7 @@ std::unique_ptr<Response> InternalServer::handle_captured_external(const Request
|
|||
} catch (const std::out_of_range& e) {}
|
||||
|
||||
if (source.empty())
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
|
||||
auto data = get_default_data();
|
||||
data.set("source", source);
|
||||
|
@ -712,7 +712,7 @@ std::unique_ptr<Response> InternalServer::handle_catalog(const RequestContext& r
|
|||
host = request.get_header("Host");
|
||||
url = request.get_url_part(1);
|
||||
} catch (const std::out_of_range&) {
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
}
|
||||
|
||||
if (url == "v2") {
|
||||
|
@ -720,7 +720,7 @@ std::unique_ptr<Response> InternalServer::handle_catalog(const RequestContext& r
|
|||
}
|
||||
|
||||
if (url != "searchdescription.xml" && url != "root.xml" && url != "search") {
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
}
|
||||
|
||||
if (url == "searchdescription.xml") {
|
||||
|
@ -856,7 +856,7 @@ std::unique_ptr<Response> InternalServer::handle_content(const RequestContext& r
|
|||
std::string searchURL = m_root+"/search?pattern="+pattern; // Make a full search on the entire library.
|
||||
const std::string details = searchSuggestionHTML(searchURL, kiwix::urlDecode(pattern));
|
||||
|
||||
return Response::build_404(*this, request, bookName, "", details);
|
||||
return Response::build_404(*this, request.get_full_url(), bookName, "", details);
|
||||
}
|
||||
|
||||
auto urlStr = request.get_url().substr(bookName.size()+1);
|
||||
|
@ -889,7 +889,7 @@ std::unique_ptr<Response> InternalServer::handle_content(const RequestContext& r
|
|||
std::string searchURL = m_root+"/search?content="+bookName+"&pattern="+pattern; // Make a search on this specific book only.
|
||||
const std::string details = searchSuggestionHTML(searchURL, kiwix::urlDecode(pattern));
|
||||
|
||||
return Response::build_404(*this, request, bookName, getArchiveTitle(*archive), details);
|
||||
return Response::build_404(*this, request.get_full_url(), bookName, getArchiveTitle(*archive), details);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ std::unique_ptr<Response> InternalServer::handle_catalog_v2(const RequestContext
|
|||
try {
|
||||
url = request.get_url_part(2);
|
||||
} catch (const std::out_of_range&) {
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
}
|
||||
|
||||
if (url == "root.xml") {
|
||||
|
@ -67,7 +67,7 @@ std::unique_ptr<Response> InternalServer::handle_catalog_v2(const RequestContext
|
|||
} else if (url == "languages") {
|
||||
return handle_catalog_v2_languages(request);
|
||||
} else {
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ std::unique_ptr<Response> InternalServer::handle_catalog_v2_complete_entry(const
|
|||
try {
|
||||
mp_library->getBookById(entryId);
|
||||
} catch (const std::out_of_range&) {
|
||||
return Response::build_404(*this, request, "", "");
|
||||
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||
}
|
||||
|
||||
OPDSDumper opdsDumper(mp_library);
|
||||
|
|
|
@ -83,11 +83,11 @@ std::unique_ptr<Response> Response::build_304(const InternalServer& server, cons
|
|||
return response;
|
||||
}
|
||||
|
||||
std::unique_ptr<Response> Response::build_404(const InternalServer& server, const RequestContext& request, const std::string& bookName, const std::string& bookTitle, const std::string& details)
|
||||
std::unique_ptr<Response> Response::build_404(const InternalServer& server, const std::string& url, const std::string& bookName, const std::string& bookTitle, const std::string& details)
|
||||
{
|
||||
MustacheData results;
|
||||
if ( request.get_url() != "/random" ) {
|
||||
results.set("url", request.get_full_url());
|
||||
if ( !url.empty() ) {
|
||||
results.set("url", url);
|
||||
}
|
||||
results.set("details", details);
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ class Response {
|
|||
|
||||
static std::unique_ptr<Response> build(const InternalServer& server);
|
||||
static std::unique_ptr<Response> build_304(const InternalServer& server, const ETag& etag);
|
||||
static std::unique_ptr<Response> build_404(const InternalServer& server, const RequestContext& request, const std::string& bookName, const std::string& bookTitle, const std::string& details="");
|
||||
static std::unique_ptr<Response> build_404(const InternalServer& server, const std::string& url, const std::string& bookName, const std::string& bookTitle, const std::string& details="");
|
||||
static std::unique_ptr<Response> build_416(const InternalServer& server, size_t resourceLength);
|
||||
static std::unique_ptr<Response> build_500(const InternalServer& server, const std::string& msg);
|
||||
static std::unique_ptr<Response> build_redirect(const InternalServer& server, const std::string& redirectUrl);
|
||||
|
|
Loading…
Reference in New Issue