mirror of https://github.com/kiwix/libkiwix.git
Introduce HTTP400HtmlResponse.
HTTP400HtmlResponse is build on the same design than HTTP404HtmlResponse.
This commit is contained in:
parent
574c1ad690
commit
b1643e422e
|
@ -110,6 +110,7 @@ std::unique_ptr<ContentResponse> Response::build_404(const InternalServer& serve
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const UrlNotFoundMsg urlNotFoundMsg;
|
extern const UrlNotFoundMsg urlNotFoundMsg;
|
||||||
|
extern const InvalidUrlMsg invalidUrlMsg;
|
||||||
|
|
||||||
std::unique_ptr<ContentResponse> ContentResponseBlueprint::generateResponseObject() const
|
std::unique_ptr<ContentResponse> ContentResponseBlueprint::generateResponseObject() const
|
||||||
{
|
{
|
||||||
|
@ -145,6 +146,36 @@ HTTP404HtmlResponse& HTTP404HtmlResponse::operator+(const std::string& msg)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HTTP400HtmlResponse::HTTP400HtmlResponse(const InternalServer& server,
|
||||||
|
const RequestContext& request)
|
||||||
|
: ContentResponseBlueprint(&server,
|
||||||
|
&request,
|
||||||
|
MHD_HTTP_BAD_REQUEST,
|
||||||
|
"text/html",
|
||||||
|
RESOURCE::templates::_400_html)
|
||||||
|
{
|
||||||
|
kainjow::mustache::list emptyList;
|
||||||
|
this->m_data = kainjow::mustache::object{{"details", emptyList}};
|
||||||
|
}
|
||||||
|
|
||||||
|
HTTP400HtmlResponse& HTTP400HtmlResponse::operator+(InvalidUrlMsg /*unused*/)
|
||||||
|
{
|
||||||
|
std::string requestUrl = m_request.get_full_url();
|
||||||
|
const auto query = m_request.get_query();
|
||||||
|
if (!query.empty()) {
|
||||||
|
requestUrl += "?" + encodeDiples(query);
|
||||||
|
}
|
||||||
|
kainjow::mustache::mustache msgTmpl(R"(The requested URL "{{{url}}}" is not a valid request.)");
|
||||||
|
return *this + msgTmpl.render({"url", requestUrl});
|
||||||
|
}
|
||||||
|
|
||||||
|
HTTP400HtmlResponse& HTTP400HtmlResponse::operator+(const std::string& msg)
|
||||||
|
{
|
||||||
|
m_data["details"].push_back({"p", msg});
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ContentResponseBlueprint& ContentResponseBlueprint::operator+(const TaskbarInfo& taskbarInfo)
|
ContentResponseBlueprint& ContentResponseBlueprint::operator+(const TaskbarInfo& taskbarInfo)
|
||||||
{
|
{
|
||||||
this->m_taskbarInfo.reset(new TaskbarInfo(taskbarInfo));
|
this->m_taskbarInfo.reset(new TaskbarInfo(taskbarInfo));
|
||||||
|
|
|
@ -207,6 +207,20 @@ struct HTTP404HtmlResponse : ContentResponseBlueprint
|
||||||
HTTP404HtmlResponse& operator+(const std::string& errorDetails);
|
HTTP404HtmlResponse& operator+(const std::string& errorDetails);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class InvalidUrlMsg {};
|
||||||
|
|
||||||
|
extern const InvalidUrlMsg invalidUrlMsg;
|
||||||
|
|
||||||
|
struct HTTP400HtmlResponse : ContentResponseBlueprint
|
||||||
|
{
|
||||||
|
HTTP400HtmlResponse(const InternalServer& server,
|
||||||
|
const RequestContext& request);
|
||||||
|
|
||||||
|
using ContentResponseBlueprint::operator+;
|
||||||
|
HTTP400HtmlResponse& operator+(InvalidUrlMsg /*unused*/);
|
||||||
|
HTTP400HtmlResponse& operator+(const std::string& errorDetails);
|
||||||
|
};
|
||||||
|
|
||||||
class ItemResponse : public Response {
|
class ItemResponse : public Response {
|
||||||
public:
|
public:
|
||||||
ItemResponse(bool verbose, const zim::Item& item, const std::string& mimetype, const ByteRange& byterange);
|
ItemResponse(bool verbose, const zim::Item& item, const std::string& mimetype, const ByteRange& byterange);
|
||||||
|
|
|
@ -35,6 +35,7 @@ skin/block_external.js
|
||||||
skin/search_results.css
|
skin/search_results.css
|
||||||
templates/search_result.html
|
templates/search_result.html
|
||||||
templates/no_search_result.html
|
templates/no_search_result.html
|
||||||
|
templates/400.html
|
||||||
templates/404.html
|
templates/404.html
|
||||||
templates/500.html
|
templates/500.html
|
||||||
templates/index.html
|
templates/index.html
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta content="text/html;charset=UTF-8" http-equiv="content-type" />
|
||||||
|
<title>Invalid request</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Invalid request</h1>
|
||||||
|
{{#details}}
|
||||||
|
<p>
|
||||||
|
{{{p}}}
|
||||||
|
</p>
|
||||||
|
{{/details}}
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue