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 {
|
try {
|
||||||
if (! request.is_valid_url())
|
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);
|
const ETag etag = get_matching_if_none_match_etag(request);
|
||||||
if ( etag )
|
if ( etag )
|
||||||
|
@ -394,11 +394,11 @@ std::unique_ptr<Response> InternalServer::handle_meta(const RequestContext& requ
|
||||||
meta_name = request.get_argument("name");
|
meta_name = request.get_argument("name");
|
||||||
archive = mp_library->getArchiveById(bookId);
|
archive = mp_library->getArchiveById(bookId);
|
||||||
} catch (const std::out_of_range& e) {
|
} 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) {
|
if (archive == nullptr) {
|
||||||
return Response::build_404(*this, request, bookName, "");
|
return Response::build_404(*this, request.get_full_url(), bookName, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string content;
|
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)) {
|
} else if (const unsigned illustrationSize = parseIllustration(meta_name)) {
|
||||||
getArchiveFavicon(*archive, illustrationSize, content, mimeType);
|
getArchiveFavicon(*archive, illustrationSize, content, mimeType);
|
||||||
} else {
|
} 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);
|
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");
|
queryString = request.get_argument("term");
|
||||||
archive = mp_library->getArchiveById(bookId);
|
archive = mp_library->getArchiveById(bookId);
|
||||||
} catch (const std::out_of_range&) {
|
} catch (const std::out_of_range&) {
|
||||||
return Response::build_404(*this, request, bookName, "");
|
return Response::build_404(*this, "", bookName, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
auto start = 0;
|
auto start = 0;
|
||||||
|
@ -470,7 +470,7 @@ std::unique_ptr<Response> InternalServer::handle_suggest(const RequestContext& r
|
||||||
}
|
}
|
||||||
|
|
||||||
if (archive == nullptr) {
|
if (archive == nullptr) {
|
||||||
return Response::build_404(*this, request, bookName, "");
|
return Response::build_404(*this, "", bookName, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_verbose.load()) {
|
if (m_verbose.load()) {
|
||||||
|
@ -532,7 +532,7 @@ std::unique_ptr<Response> InternalServer::handle_skin(const RequestContext& requ
|
||||||
response->set_cacheable();
|
response->set_cacheable();
|
||||||
return std::move(response);
|
return std::move(response);
|
||||||
} catch (const ResourceNotFound& e) {
|
} 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) {
|
if (archive == nullptr) {
|
||||||
const std::string error_details = "No such book: " + bookName;
|
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 {
|
try {
|
||||||
|
@ -681,7 +681,7 @@ std::unique_ptr<Response> InternalServer::handle_random(const RequestContext& re
|
||||||
return build_redirect(bookName, getFinalItem(*archive, entry));
|
return build_redirect(bookName, getFinalItem(*archive, entry));
|
||||||
} catch(zim::EntryNotFound& e) {
|
} catch(zim::EntryNotFound& e) {
|
||||||
const std::string error_details = "Oops! Failed to pick a random article :(";
|
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) {}
|
} catch (const std::out_of_range& e) {}
|
||||||
|
|
||||||
if (source.empty())
|
if (source.empty())
|
||||||
return Response::build_404(*this, request, "", "");
|
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||||
|
|
||||||
auto data = get_default_data();
|
auto data = get_default_data();
|
||||||
data.set("source", source);
|
data.set("source", source);
|
||||||
|
@ -712,7 +712,7 @@ std::unique_ptr<Response> InternalServer::handle_catalog(const RequestContext& r
|
||||||
host = request.get_header("Host");
|
host = request.get_header("Host");
|
||||||
url = request.get_url_part(1);
|
url = request.get_url_part(1);
|
||||||
} catch (const std::out_of_range&) {
|
} catch (const std::out_of_range&) {
|
||||||
return Response::build_404(*this, request, "", "");
|
return Response::build_404(*this, request.get_full_url(), "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url == "v2") {
|
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") {
|
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") {
|
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.
|
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));
|
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);
|
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.
|
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));
|
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 {
|
try {
|
||||||
url = request.get_url_part(2);
|
url = request.get_url_part(2);
|
||||||
} catch (const std::out_of_range&) {
|
} 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") {
|
if (url == "root.xml") {
|
||||||
|
@ -67,7 +67,7 @@ std::unique_ptr<Response> InternalServer::handle_catalog_v2(const RequestContext
|
||||||
} else if (url == "languages") {
|
} else if (url == "languages") {
|
||||||
return handle_catalog_v2_languages(request);
|
return handle_catalog_v2_languages(request);
|
||||||
} else {
|
} 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 {
|
try {
|
||||||
mp_library->getBookById(entryId);
|
mp_library->getBookById(entryId);
|
||||||
} catch (const std::out_of_range&) {
|
} 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);
|
OPDSDumper opdsDumper(mp_library);
|
||||||
|
|
|
@ -83,11 +83,11 @@ std::unique_ptr<Response> Response::build_304(const InternalServer& server, cons
|
||||||
return response;
|
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;
|
MustacheData results;
|
||||||
if ( request.get_url() != "/random" ) {
|
if ( !url.empty() ) {
|
||||||
results.set("url", request.get_full_url());
|
results.set("url", url);
|
||||||
}
|
}
|
||||||
results.set("details", details);
|
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(const InternalServer& server);
|
||||||
static std::unique_ptr<Response> build_304(const InternalServer& server, const ETag& etag);
|
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_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_500(const InternalServer& server, const std::string& msg);
|
||||||
static std::unique_ptr<Response> build_redirect(const InternalServer& server, const std::string& redirectUrl);
|
static std::unique_ptr<Response> build_redirect(const InternalServer& server, const std::string& redirectUrl);
|
||||||
|
|
Loading…
Reference in New Issue