Moved verbosity control to Response::send()

It makes little sense to pass the verbosity control to the `Response`
constructor if it is used only in `Response::send()`.
This commit is contained in:
Veloman Yunkan 2023-11-29 17:39:16 +04:00
parent 3dce025f47
commit f81a5a1a4b
4 changed files with 13 additions and 20 deletions

View File

@ -558,7 +558,7 @@ MHD_Result InternalServer::handlerCallback(struct MHD_Connection* connection,
response->set_etag_body(getLibraryId()); response->set_etag_body(getLibraryId());
} }
auto ret = response->send(request, connection); auto ret = response->send(request, m_verbose.load(), connection);
auto end_time = std::chrono::steady_clock::now(); auto end_time = std::chrono::steady_clock::now();
auto time_span = std::chrono::duration_cast<std::chrono::duration<double>>(end_time - start_time); auto time_span = std::chrono::duration_cast<std::chrono::duration<double>>(end_time - start_time);
if (m_verbose.load()) { if (m_verbose.load()) {

View File

@ -189,9 +189,7 @@ class InternalServer {
class CustomizedResources; class CustomizedResources;
std::unique_ptr<CustomizedResources> m_customizedResources; std::unique_ptr<CustomizedResources> m_customizedResources;
friend std::unique_ptr<Response> Response::build(const InternalServer& server);
friend std::unique_ptr<ContentResponse> ContentResponse::build(const InternalServer& server, const std::string& content, const std::string& mimetype); friend std::unique_ptr<ContentResponse> ContentResponse::build(const InternalServer& server, const std::string& content, const std::string& mimetype);
friend std::unique_ptr<Response> ItemResponse::build(const InternalServer& server, const RequestContext& request, const zim::Item& item);
}; };
} }

View File

@ -119,9 +119,8 @@ const char* getCacheControlHeader(Response::Kind k)
} // unnamed namespace } // unnamed namespace
Response::Response(bool verbose) Response::Response()
: m_verbose(verbose), : m_returnCode(MHD_HTTP_OK)
m_returnCode(MHD_HTTP_OK)
{ {
add_header(MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, "*"); add_header(MHD_HTTP_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, "*");
} }
@ -135,7 +134,7 @@ void Response::set_kind(Kind k)
std::unique_ptr<Response> Response::build(const InternalServer& server) std::unique_ptr<Response> Response::build(const InternalServer& server)
{ {
return std::unique_ptr<Response>(new Response(server.m_verbose.load())); return std::unique_ptr<Response>(new Response());
} }
std::unique_ptr<Response> Response::build_304(const InternalServer& server, const ETag& etag) std::unique_ptr<Response> Response::build_304(const InternalServer& server, const ETag& etag)
@ -363,7 +362,7 @@ ContentResponse::create_mhd_response(const RequestContext& request)
return response; return response;
} }
MHD_Result Response::send(const RequestContext& request, MHD_Connection* connection) MHD_Result Response::send(const RequestContext& request, bool verbose, MHD_Connection* connection)
{ {
MHD_Response* response = create_mhd_response(request); MHD_Response* response = create_mhd_response(request);
@ -379,7 +378,7 @@ MHD_Result Response::send(const RequestContext& request, MHD_Connection* connect
if (m_returnCode == MHD_HTTP_OK && m_byteRange.kind() == ByteRange::RESOLVED_PARTIAL_CONTENT) if (m_returnCode == MHD_HTTP_OK && m_byteRange.kind() == ByteRange::RESOLVED_PARTIAL_CONTENT)
m_returnCode = MHD_HTTP_PARTIAL_CONTENT; m_returnCode = MHD_HTTP_PARTIAL_CONTENT;
if (m_verbose) if (verbose)
print_response_info(m_returnCode, response); print_response_info(m_returnCode, response);
auto ret = MHD_queue_response(connection, m_returnCode, response); auto ret = MHD_queue_response(connection, m_returnCode, response);
@ -387,8 +386,8 @@ MHD_Result Response::send(const RequestContext& request, MHD_Connection* connect
return ret; return ret;
} }
ContentResponse::ContentResponse(const std::string& root, bool verbose, const std::string& content, const std::string& mimetype) : ContentResponse::ContentResponse(const std::string& root, const std::string& content, const std::string& mimetype) :
Response(verbose), Response(),
m_root(root), m_root(root),
m_content(content), m_content(content),
m_mimeType(mimetype) m_mimeType(mimetype)
@ -403,7 +402,6 @@ std::unique_ptr<ContentResponse> ContentResponse::build(
{ {
return std::unique_ptr<ContentResponse>(new ContentResponse( return std::unique_ptr<ContentResponse>(new ContentResponse(
server.m_root, server.m_root,
server.m_verbose.load(),
content, content,
mimetype)); mimetype));
} }
@ -418,8 +416,8 @@ std::unique_ptr<ContentResponse> ContentResponse::build(
return ContentResponse::build(server, content, mimetype); return ContentResponse::build(server, content, mimetype);
} }
ItemResponse::ItemResponse(bool verbose, const zim::Item& item, const std::string& mimetype, const ByteRange& byterange) : ItemResponse::ItemResponse(const zim::Item& item, const std::string& mimetype, const ByteRange& byterange) :
Response(verbose), Response(),
m_item(item), m_item(item),
m_mimeType(mimetype) m_mimeType(mimetype)
{ {
@ -448,7 +446,6 @@ std::unique_ptr<Response> ItemResponse::build(const InternalServer& server, cons
} }
return std::unique_ptr<Response>(new ItemResponse( return std::unique_ptr<Response>(new ItemResponse(
server.m_verbose.load(),
item, item,
mimetype, mimetype,
byteRange)); byteRange));

View File

@ -54,7 +54,7 @@ class Response {
}; };
public: public:
Response(bool verbose); Response();
virtual ~Response() = default; virtual ~Response() = default;
static std::unique_ptr<Response> build(const InternalServer& server); static std::unique_ptr<Response> build(const InternalServer& server);
@ -62,7 +62,7 @@ class Response {
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_redirect(const InternalServer& server, const std::string& redirectUrl); static std::unique_ptr<Response> build_redirect(const InternalServer& server, const std::string& redirectUrl);
MHD_Result send(const RequestContext& request, MHD_Connection* connection); MHD_Result send(const RequestContext& request, bool verbose, MHD_Connection* connection);
void set_code(int code) { m_returnCode = code; } void set_code(int code) { m_returnCode = code; }
void set_kind(Kind k); void set_kind(Kind k);
@ -78,7 +78,6 @@ class Response {
protected: // data protected: // data
Kind m_kind = DYNAMIC_CONTENT; Kind m_kind = DYNAMIC_CONTENT;
bool m_verbose;
int m_returnCode; int m_returnCode;
ByteRange m_byteRange; ByteRange m_byteRange;
ETag m_etag; ETag m_etag;
@ -92,7 +91,6 @@ class ContentResponse : public Response {
public: public:
ContentResponse( ContentResponse(
const std::string& root, const std::string& root,
bool verbose,
const std::string& content, const std::string& content,
const std::string& mimetype); const std::string& mimetype);
@ -199,7 +197,7 @@ private: // overrides
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(const zim::Item& item, const std::string& mimetype, const ByteRange& byterange);
static std::unique_ptr<Response> build(const InternalServer& server, const RequestContext& request, const zim::Item& item); static std::unique_ptr<Response> build(const InternalServer& server, const RequestContext& request, const zim::Item& item);
private: private: