From 912f1d803c33d5db5d304595e4bd1786c9097391 Mon Sep 17 00:00:00 2001 From: Muhammad <73486659+Mis1eader-dev@users.noreply.github.com> Date: Thu, 26 Sep 2024 10:47:58 +0300 Subject: [PATCH] Optimize query params and allow for empty values (#2171) --- lib/src/HttpRequestImpl.cc | 44 ++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/lib/src/HttpRequestImpl.cc b/lib/src/HttpRequestImpl.cc index 80b45470f5..83fc771cad 100644 --- a/lib/src/HttpRequestImpl.cc +++ b/lib/src/HttpRequestImpl.cc @@ -96,13 +96,15 @@ void HttpRequestImpl::parseParameters() const while (cpos < key.length() && isspace(static_cast(key[cpos]))) ++cpos; - key = key.substr(cpos); + key.remove_prefix(cpos); auto pvalue = coo.substr(epos + 1); - std::string pdecode = utils::urlDecode(pvalue); - std::string keydecode = utils::urlDecode(key); - parameters_[keydecode] = pdecode; + parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue); } - value = value.substr(pos + 1); + else + { + parameters_[utils::urlDecode(coo)]; + } + value.remove_prefix(pos + 1); } if (value.length() > 0) { @@ -115,11 +117,13 @@ void HttpRequestImpl::parseParameters() const while (cpos < key.length() && isspace(static_cast(key[cpos]))) ++cpos; - key = key.substr(cpos); + key.remove_prefix(cpos); auto pvalue = coo.substr(epos + 1); - std::string pdecode = utils::urlDecode(pvalue); - std::string keydecode = utils::urlDecode(key); - parameters_[keydecode] = pdecode; + parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue); + } + else + { + parameters_[utils::urlDecode(coo)]; } } } @@ -153,13 +157,15 @@ void HttpRequestImpl::parseParameters() const while (cpos < key.length() && isspace(static_cast(key[cpos]))) ++cpos; - key = key.substr(cpos); + key.remove_prefix(cpos); auto pvalue = coo.substr(epos + 1); - std::string pdecode = utils::urlDecode(pvalue); - std::string keydecode = utils::urlDecode(key); - parameters_[keydecode] = pdecode; + parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue); } - value = value.substr(pos + 1); + else + { + parameters_[utils::urlDecode(coo)]; + } + value.remove_prefix(pos + 1); } if (value.length() > 0) { @@ -172,11 +178,13 @@ void HttpRequestImpl::parseParameters() const while (cpos < key.length() && isspace(static_cast(key[cpos]))) ++cpos; - key = key.substr(cpos); + key.remove_prefix(cpos); auto pvalue = coo.substr(epos + 1); - std::string pdecode = utils::urlDecode(pvalue); - std::string keydecode = utils::urlDecode(key); - parameters_[keydecode] = pdecode; + parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue); + } + else + { + parameters_[utils::urlDecode(coo)]; } } }