diff options
| author | Anton Kudryavtsev <anton.kudryavtsev@vk.team> | 2023-08-23 19:09:23 +0300 |
|---|---|---|
| committer | Anton Kudryavtsev <anton.kudryavtsev@vk.team> | 2023-08-27 15:09:13 +0300 |
| commit | e3bb75340e0b0d833f14be7fabe952fea9d3396c (patch) | |
| tree | b834d418b9684445ba97f93a030b24e490668637 /src/network/access/qnetworkrequest.cpp | |
| parent | 881260f9e473ad2255c9124d73a6060dd27ad6e5 (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.cpp | 36 |
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('"'); + }); } |
