Add a function in NetworkCommon parseHeaderList which parses a header list as a string into a vector of header pairs (#2623)

This commit is contained in:
pajlada
2021-04-17 13:49:19 +02:00
committed by GitHub
parent cceadf473a
commit 2f906c5504
9 changed files with 119 additions and 11 deletions
+35
View File
@@ -0,0 +1,35 @@
#include "common/NetworkCommon.hpp"
#include <QStringList>
namespace chatterino {
std::vector<std::pair<QByteArray, QByteArray>> parseHeaderList(
const QString &headerListString)
{
std::vector<std::pair<QByteArray, QByteArray>> res;
// Split the string into a list of header pairs
// e.g. "Authorization:secretkey;NextHeader:boo" turning into ["Authorization:secretkey","NextHeader:boo"]
auto headerPairs = headerListString.split(";");
for (const auto &headerPair : headerPairs)
{
const auto headerName =
headerPair.section(":", 0, 0).trimmed().toUtf8();
const auto headerValue = headerPair.section(":", 1).trimmed().toUtf8();
if (headerName.isEmpty() || headerValue.isEmpty())
{
// The header part either didn't contain a : or the name/value was empty
// Skip the value
continue;
}
res.emplace_back(headerName, headerValue);
}
return res;
}
} // namespace chatterino