Refactoring: extracted fullURL2LocalURL()

Also dropped RequestContex::valid_url
This commit is contained in:
Veloman Yunkan 2020-04-13 00:34:39 +04:00
parent abb3dec700
commit fd80f2a89f
2 changed files with 20 additions and 20 deletions

View File

@ -45,6 +45,22 @@ RequestMethod str2RequestMethod(const std::string& method) {
else return RequestMethod::OTHER; else return RequestMethod::OTHER;
} }
std::string
fullURL2LocalURL(const std::string& full_url, const std::string& rootLocation)
{
if (rootLocation.empty()) {
// nothing special to handle.
return full_url;
} else if (full_url == rootLocation) {
return "/";
} else if (full_url.size() > rootLocation.size() &&
full_url.substr(0, rootLocation.size()+1) == rootLocation + "/") {
return full_url.substr(rootLocation.size());
} else {
return "";
}
}
} // unnamed namespace } // unnamed namespace
RequestContext::RequestContext(struct MHD_Connection* connection, RequestContext::RequestContext(struct MHD_Connection* connection,
@ -53,8 +69,7 @@ RequestContext::RequestContext(struct MHD_Connection* connection,
const std::string& _method, const std::string& _method,
const std::string& version) : const std::string& version) :
full_url(_url), full_url(_url),
url(_url), url(fullURL2LocalURL(_url, rootLocation)),
valid_url(true),
method(str2RequestMethod(_method)), method(str2RequestMethod(_method)),
version(version), version(version),
requestIndex(s_requestIndex++), requestIndex(s_requestIndex++),
@ -65,21 +80,6 @@ RequestContext::RequestContext(struct MHD_Connection* connection,
MHD_get_connection_values(connection, MHD_HEADER_KIND, &RequestContext::fill_header, this); MHD_get_connection_values(connection, MHD_HEADER_KIND, &RequestContext::fill_header, this);
MHD_get_connection_values(connection, MHD_GET_ARGUMENT_KIND, &RequestContext::fill_argument, this); MHD_get_connection_values(connection, MHD_GET_ARGUMENT_KIND, &RequestContext::fill_argument, this);
valid_url = true;
if (rootLocation.empty()) {
// nothing special to handle.
url = full_url;
} else {
if (full_url == rootLocation) {
url = "/";
} else if (full_url.size() > rootLocation.size() &&
full_url.substr(0, rootLocation.size()+1) == rootLocation + "/") {
url = full_url.substr(rootLocation.size());
} else {
valid_url = false;
}
}
try { try {
acceptEncodingDeflate = acceptEncodingDeflate =
(get_header(MHD_HTTP_HEADER_ACCEPT_ENCODING).find("deflate") != std::string::npos); (get_header(MHD_HTTP_HEADER_ACCEPT_ENCODING).find("deflate") != std::string::npos);
@ -143,10 +143,11 @@ void RequestContext::print_debug_info() const {
printf(" - %s : '%s'\n", it->first.c_str(), it->second.c_str()); printf(" - %s : '%s'\n", it->first.c_str(), it->second.c_str());
} }
printf("Parsed : \n"); printf("Parsed : \n");
printf("full_url: %s\n", full_url.c_str());
printf("url : %s\n", url.c_str()); printf("url : %s\n", url.c_str());
printf("acceptEncodingDeflate : %d\n", acceptEncodingDeflate); printf("acceptEncodingDeflate : %d\n", acceptEncodingDeflate);
printf("has_range : %d\n", accept_range); printf("has_range : %d\n", accept_range);
printf("is_valid_url : %d\n", valid_url); printf("is_valid_url : %d\n", is_valid_url());
printf(".............\n"); printf(".............\n");
} }
@ -184,7 +185,7 @@ std::string RequestContext::get_full_url() const {
} }
bool RequestContext::is_valid_url() const { bool RequestContext::is_valid_url() const {
return valid_url; return !url.empty();
} }
bool RequestContext::has_range() const { bool RequestContext::has_range() const {

View File

@ -86,7 +86,6 @@ class RequestContext {
private: private:
std::string full_url; std::string full_url;
std::string url; std::string url;
bool valid_url;
RequestMethod method; RequestMethod method;
std::string version; std::string version;
unsigned long long requestIndex; unsigned long long requestIndex;