Make the response responsible to detect if we must introduce taskbar.

The response detect if taskbar must be added depending of the mimetype.

Now, `set_taskbar` can be call unconditionally
(no need to check for the mimetype)

And we don't need to call set_taskbar if we have no information to set.
This commit is contained in:
Matthieu Gautier 2020-08-11 17:37:29 +02:00
parent c14c148af7
commit 87b5adcaf4
3 changed files with 12 additions and 19 deletions

View File

@ -477,7 +477,6 @@ Response InternalServer::build_homepage(const RequestContext& request)
response.set_template(RESOURCE::templates::index_html, homepage_data()); response.set_template(RESOURCE::templates::index_html, homepage_data());
response.set_mimeType("text/html; charset=utf-8"); response.set_mimeType("text/html; charset=utf-8");
response.set_compress(true); response.set_compress(true);
response.set_taskbar("", "");
return response; return response;
} }
@ -795,7 +794,6 @@ Response InternalServer::handle_captured_external(const RequestContext& request)
response.set_template(RESOURCE::templates::captured_external_html, data); response.set_template(RESOURCE::templates::captured_external_html, data);
response.set_mimeType("text/html; charset=utf-8"); response.set_mimeType("text/html; charset=utf-8");
response.set_compress(true); response.set_compress(true);
response.set_taskbar("", "");
return response; return response;
} }
@ -957,14 +955,13 @@ Response InternalServer::handle_content(const RequestContext& request)
auto response = get_default_response(); auto response = get_default_response();
response.set_entry(entry, request); response.set_entry(entry, request);
response.set_taskbar(bookName, reader->getTitle());
if (m_verbose.load()) { if (m_verbose.load()) {
printf("Found %s\n", entry.getPath().c_str()); printf("Found %s\n", entry.getPath().c_str());
printf("mimeType: %s\n", response.get_mimeType().c_str()); printf("mimeType: %s\n", response.get_mimeType().c_str());
} }
if ( startsWith(response.get_mimeType(), "text/html") )
response.set_taskbar(bookName, reader->getTitle());
return response; return response;
} }

View File

@ -51,8 +51,8 @@ Response::Response(const std::string& root, bool verbose, bool withTaskbar, bool
m_withTaskbar(withTaskbar), m_withTaskbar(withTaskbar),
m_withLibraryButton(withLibraryButton), m_withLibraryButton(withLibraryButton),
m_blockExternalLinks(blockExternalLinks), m_blockExternalLinks(blockExternalLinks),
m_addTaskbar(false), m_bookName(""),
m_bookName("") m_bookTitle("")
{ {
} }
@ -127,9 +127,6 @@ std::string render_template(const std::string& template_str, kainjow::mustache::
void Response::introduce_taskbar() void Response::introduce_taskbar()
{ {
if ( !m_withTaskbar || !contentDecorationAllowed() )
// Taskbar either globally disabled or not allowed for this type
return;
kainjow::mustache::data data; kainjow::mustache::data data;
data.set("root", m_root); data.set("root", m_root);
data.set("content", m_bookName); data.set("content", m_bookName);
@ -152,8 +149,6 @@ void Response::introduce_taskbar()
void Response::inject_externallinks_blocker() void Response::inject_externallinks_blocker()
{ {
if ( !contentDecorationAllowed() )
return;
kainjow::mustache::data data; kainjow::mustache::data data;
data.set("root", m_root); data.set("root", m_root);
auto script_tag = render_template(RESOURCE::templates::external_blocker_part_html, data); auto script_tag = render_template(RESOURCE::templates::external_blocker_part_html, data);
@ -174,7 +169,8 @@ Response::can_compress(const RequestContext& request) const
bool bool
Response::contentDecorationAllowed() const Response::contentDecorationAllowed() const
{ {
return m_mimeType.find(";raw=true") == std::string::npos; return (startsWith(m_mimeType, "text/html")
&& m_mimeType.find(";raw=true") == std::string::npos);
} }
MHD_Response* MHD_Response*
@ -194,11 +190,13 @@ Response::create_error_response(const RequestContext& request) const
MHD_Response* MHD_Response*
Response::create_raw_content_mhd_response(const RequestContext& request) Response::create_raw_content_mhd_response(const RequestContext& request)
{ {
if (m_addTaskbar) { if (contentDecorationAllowed()) {
introduce_taskbar(); if (m_withTaskbar) {
} introduce_taskbar();
if ( m_blockExternalLinks && startsWith(m_mimeType, "text/html") ) { }
inject_externallinks_blocker(); if (m_blockExternalLinks) {
inject_externallinks_blocker();
}
} }
bool shouldCompress = m_compress && can_compress(request); bool shouldCompress = m_compress && can_compress(request);
@ -360,7 +358,6 @@ void Response::set_entry(const Entry& entry, const RequestContext& request) {
void Response::set_taskbar(const std::string& bookName, const std::string& bookTitle) void Response::set_taskbar(const std::string& bookName, const std::string& bookTitle)
{ {
m_addTaskbar = true;
m_bookName = bookName; m_bookName = bookName;
m_bookTitle = bookTitle; m_bookTitle = bookTitle;
} }

View File

@ -92,7 +92,6 @@ class Response {
bool m_withLibraryButton; bool m_withLibraryButton;
bool m_blockExternalLinks; bool m_blockExternalLinks;
bool m_compress; bool m_compress;
bool m_addTaskbar;
std::string m_bookName; std::string m_bookName;
std::string m_bookTitle; std::string m_bookTitle;
ByteRange m_byteRange; ByteRange m_byteRange;