mirror of https://github.com/Icinga/icinga2.git
parent
53f7481a5f
commit
d264a0dab8
|
@ -257,17 +257,26 @@ String Url::Format(bool print_credentials) const
|
|||
else
|
||||
param += "&";
|
||||
|
||||
// Just one (or one empty) value
|
||||
if (kv.second.size() == 1) {
|
||||
param += key;
|
||||
param += kv.second[0].IsEmpty() ?
|
||||
String() : "=" + Utility::EscapeString(kv.second[0], ACQUERY_ENCODE, false);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Array
|
||||
String temp;
|
||||
for (const String s : kv.second) {
|
||||
if (!temp.IsEmpty())
|
||||
temp += "&";
|
||||
|
||||
temp += key;
|
||||
|
||||
if (kv.second.size() > 1)
|
||||
temp += "[]";
|
||||
|
||||
temp += "=" + Utility::EscapeString(s, ACQUERY_ENCODE, false);
|
||||
if (!s.IsEmpty())
|
||||
temp += "=" + Utility::EscapeString(s, ACQUERY_ENCODE, false);
|
||||
}
|
||||
param += temp;
|
||||
}
|
||||
|
@ -375,7 +384,7 @@ bool Url::ParseQuery(const String& query)
|
|||
String key = token.SubStr(0, pHelper);
|
||||
String value = Empty;
|
||||
|
||||
if (pHelper != token.GetLength() - 1)
|
||||
if (pHelper != String::NPos && pHelper != token.GetLength() - 1)
|
||||
value = token.SubStr(pHelper+1);
|
||||
|
||||
if (!ValidateToken(value, ACQUERY))
|
||||
|
|
|
@ -91,6 +91,7 @@ BOOST_AUTO_TEST_CASE(format)
|
|||
|
||||
url = new Url("/foo/bar/index.php?blaka");
|
||||
BOOST_CHECK(new Url(url->Format()));
|
||||
BOOST_CHECK(url->Format() == "/foo/bar/index.php?blaka");
|
||||
|
||||
url = new Url("/");
|
||||
BOOST_CHECK(url->Format() == "/");
|
||||
|
|
Loading…
Reference in New Issue