Skip to content

Commit 912f1d8

Browse files
Optimize query params and allow for empty values (#2171)
1 parent 13d7148 commit 912f1d8

1 file changed

Lines changed: 26 additions & 18 deletions

File tree

lib/src/HttpRequestImpl.cc

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,15 @@ void HttpRequestImpl::parseParameters() const
9696
while (cpos < key.length() &&
9797
isspace(static_cast<unsigned char>(key[cpos])))
9898
++cpos;
99-
key = key.substr(cpos);
99+
key.remove_prefix(cpos);
100100
auto pvalue = coo.substr(epos + 1);
101-
std::string pdecode = utils::urlDecode(pvalue);
102-
std::string keydecode = utils::urlDecode(key);
103-
parameters_[keydecode] = pdecode;
101+
parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue);
104102
}
105-
value = value.substr(pos + 1);
103+
else
104+
{
105+
parameters_[utils::urlDecode(coo)];
106+
}
107+
value.remove_prefix(pos + 1);
106108
}
107109
if (value.length() > 0)
108110
{
@@ -115,11 +117,13 @@ void HttpRequestImpl::parseParameters() const
115117
while (cpos < key.length() &&
116118
isspace(static_cast<unsigned char>(key[cpos])))
117119
++cpos;
118-
key = key.substr(cpos);
120+
key.remove_prefix(cpos);
119121
auto pvalue = coo.substr(epos + 1);
120-
std::string pdecode = utils::urlDecode(pvalue);
121-
std::string keydecode = utils::urlDecode(key);
122-
parameters_[keydecode] = pdecode;
122+
parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue);
123+
}
124+
else
125+
{
126+
parameters_[utils::urlDecode(coo)];
123127
}
124128
}
125129
}
@@ -153,13 +157,15 @@ void HttpRequestImpl::parseParameters() const
153157
while (cpos < key.length() &&
154158
isspace(static_cast<unsigned char>(key[cpos])))
155159
++cpos;
156-
key = key.substr(cpos);
160+
key.remove_prefix(cpos);
157161
auto pvalue = coo.substr(epos + 1);
158-
std::string pdecode = utils::urlDecode(pvalue);
159-
std::string keydecode = utils::urlDecode(key);
160-
parameters_[keydecode] = pdecode;
162+
parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue);
161163
}
162-
value = value.substr(pos + 1);
164+
else
165+
{
166+
parameters_[utils::urlDecode(coo)];
167+
}
168+
value.remove_prefix(pos + 1);
163169
}
164170
if (value.length() > 0)
165171
{
@@ -172,11 +178,13 @@ void HttpRequestImpl::parseParameters() const
172178
while (cpos < key.length() &&
173179
isspace(static_cast<unsigned char>(key[cpos])))
174180
++cpos;
175-
key = key.substr(cpos);
181+
key.remove_prefix(cpos);
176182
auto pvalue = coo.substr(epos + 1);
177-
std::string pdecode = utils::urlDecode(pvalue);
178-
std::string keydecode = utils::urlDecode(key);
179-
parameters_[keydecode] = pdecode;
183+
parameters_[utils::urlDecode(key)] = utils::urlDecode(pvalue);
184+
}
185+
else
186+
{
187+
parameters_[utils::urlDecode(coo)];
180188
}
181189
}
182190
}

0 commit comments

Comments
 (0)