diff --git a/src/server.cpp b/src/server.cpp index 5b680328d..dd50afcd3 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -860,6 +860,13 @@ bool is_compressible_mime_type(const std::string& mimeType) || mimeType.find("application/json") != string::npos; } +int get_range_len(const kiwix::Entry& entry, RequestContext::ByteRange range) +{ + return range.second == -1 + ? entry.getSize() - range.first + : range.second - range.first; +} + } // unnamed namespace std::shared_ptr @@ -926,11 +933,9 @@ Response InternalServer::handle_content(const RequestContext& request) printf("mimeType: %s\n", mimeType.c_str()); } - std::string content; - if ( is_compressible_mime_type(mimeType) ) { zim::Blob raw_content = entry.getBlob(); - content = string(raw_content.data(), raw_content.size()); + const std::string content = string(raw_content.data(), raw_content.size()); auto response = get_default_response(); if (mimeType.find("text/html") != string::npos) @@ -942,12 +947,7 @@ Response InternalServer::handle_content(const RequestContext& request) response.set_cache(true); return response; } else { - int range_len; - if (request.get_range().second == -1) { - range_len = entry.getSize() - request.get_range().first; - } else { - range_len = request.get_range().second - request.get_range().first; - } + const int range_len = get_range_len(entry, request.get_range()); auto response = get_default_response(); response.set_entry(entry); response.set_mimeType(mimeType); diff --git a/src/server/request_context.h b/src/server/request_context.h index 8293498f3..d58040f07 100644 --- a/src/server/request_context.h +++ b/src/server/request_context.h @@ -51,7 +51,10 @@ class IndexError: public std::runtime_error {}; class RequestContext { - public: + public: // types + typedef std::pair ByteRange; + + public: // functions RequestContext(struct MHD_Connection* connection, std::string rootLocation, const std::string& url, @@ -79,11 +82,11 @@ class RequestContext { std::string get_full_url() const; bool has_range() const; - std::pair get_range() const; + ByteRange get_range() const; bool can_compress() const { return acceptEncodingDeflate; } - private: + private: // data std::string full_url; std::string url; RequestMethod method; @@ -93,10 +96,11 @@ class RequestContext { bool acceptEncodingDeflate; bool accept_range; - std::pair range_pair; + ByteRange range_pair; std::map headers; std::map arguments; + private: // functions static int fill_header(void *, enum MHD_ValueKind, const char*, const char*); static int fill_argument(void *, enum MHD_ValueKind, const char*, const char*); };