summaryrefslogtreecommitdiffstats
path: root/src/network/access/qnetworkrequest.cpp
diff options
context:
space:
mode:
authorAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-08-23 19:09:23 +0300
committerAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-08-27 15:09:13 +0300
commite3bb75340e0b0d833f14be7fabe952fea9d3396c (patch)
treeb834d418b9684445ba97f93a030b24e490668637 /src/network/access/qnetworkrequest.cpp
parent881260f9e473ad2255c9124d73a6060dd27ad6e5 (diff)
qnetworkrequest: extract method
for If-Match and If-None-Match parsing Change-Id: I523f5c639a01bafe6f25f13c0d25b3c62fa75282 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/network/access/qnetworkrequest.cpp')
-rw-r--r--src/network/access/qnetworkrequest.cpp36
1 files changed, 13 insertions, 23 deletions
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 8b9b5db3783..329892a1b34 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -1219,7 +1219,8 @@ static QVariant parseETag(QByteArrayView raw)
return QString::fromLatin1(trimmed);
}
-static QVariant parseIfMatch(const QByteArray &raw)
+template<typename T>
+static QVariant parseMatchImpl(const QByteArray &raw, T op)
{
const QByteArray trimmedRaw = raw.trimmed();
if (trimmedRaw == "*")
@@ -1229,36 +1230,25 @@ static QVariant parseIfMatch(const QByteArray &raw)
const QList<QByteArray> split = trimmedRaw.split(',');
for (const QByteArray &element : split) {
const QByteArray trimmed = element.trimmed();
- if (!trimmed.startsWith('"'))
- continue;
-
- if (!trimmed.endsWith('"'))
+ if (!op(trimmed))
continue;
-
tags += QString::fromLatin1(trimmed);
}
return tags;
}
-static QVariant parseIfNoneMatch(const QByteArray &raw)
+static QVariant parseIfMatch(const QByteArray &raw)
{
- const QByteArray trimmedRaw = raw.trimmed();
- if (trimmedRaw == "*")
- return QStringList(QStringLiteral("*"));
-
- QStringList tags;
- const QList<QByteArray> split = trimmedRaw.split(',');
- for (const QByteArray &element : split) {
- const QByteArray trimmed = element.trimmed();
- if (!trimmed.startsWith('"') && !trimmed.startsWith(R"(W/")"))
- continue;
-
- if (!trimmed.endsWith('"'))
- continue;
+ return parseMatchImpl(raw, [](QByteArrayView element) {
+ return element.startsWith('"') && element.endsWith('"');
+ });
+}
- tags += QString::fromLatin1(trimmed);
- }
- return tags;
+static QVariant parseIfNoneMatch(const QByteArray &raw)
+{
+ return parseMatchImpl(raw, [](QByteArrayView element) {
+ return (element.startsWith('"') || element.startsWith(R"(W/")")) && element.endsWith('"');
+ });
}