diff options
Diffstat (limited to 'src/network/access/qnetworkrequest.cpp')
| -rw-r--r-- | src/network/access/qnetworkrequest.cpp | 50 |
1 files changed, 20 insertions, 30 deletions
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index 0272ff18999..79ef95eadf0 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -1056,6 +1056,22 @@ static QByteArray headerName(QNetworkRequest::KnownHeaders header) return QByteArray(); } +static QByteArray makeCookieHeader(const QVariant &value, QNetworkCookie::RawForm type, QByteArrayView separator) +{ + QList<QNetworkCookie> cookies = qvariant_cast<QList<QNetworkCookie> >(value); + if (cookies.isEmpty() && value.userType() == qMetaTypeId<QNetworkCookie>()) + cookies << qvariant_cast<QNetworkCookie>(value); + + QByteArray result; + for (const QNetworkCookie &cookie : std::as_const(cookies)) { + result += cookie.toRawForm(type); + result += separator; + } + if (!result.isEmpty()) + result.chop(separator.size()); + return result; +} + static QByteArray headerValue(QNetworkRequest::KnownHeaders header, const QVariant &value) { switch (header) { @@ -1091,37 +1107,11 @@ static QByteArray headerValue(QNetworkRequest::KnownHeaders header, const QVaria return value.toByteArray(); } - case QNetworkRequest::CookieHeader: { - QList<QNetworkCookie> cookies = qvariant_cast<QList<QNetworkCookie> >(value); - if (cookies.isEmpty() && value.userType() == qMetaTypeId<QNetworkCookie>()) - cookies << qvariant_cast<QNetworkCookie>(value); - - constexpr QByteArrayView separator = "; "; - QByteArray result; - for (const QNetworkCookie &cookie : std::as_const(cookies)) { - result += cookie.toRawForm(QNetworkCookie::NameAndValueOnly); - result += separator; - } - if (!result.isEmpty()) - result.chop(separator.size()); - return result; - } + case QNetworkRequest::CookieHeader: + return makeCookieHeader(value, QNetworkCookie::NameAndValueOnly, "; "); - case QNetworkRequest::SetCookieHeader: { - QList<QNetworkCookie> cookies = qvariant_cast<QList<QNetworkCookie> >(value); - if (cookies.isEmpty() && value.userType() == qMetaTypeId<QNetworkCookie>()) - cookies << qvariant_cast<QNetworkCookie>(value); -\ - constexpr QByteArrayView separator = ", "; - QByteArray result; - for (const QNetworkCookie &cookie : std::as_const(cookies)) { - result += cookie.toRawForm(QNetworkCookie::Full); - result += separator; - } - if (!result.isEmpty()) - result.chop(separator.size()); - return result; - } + case QNetworkRequest::SetCookieHeader: + return makeCookieHeader(value, QNetworkCookie::Full, ", "); } return QByteArray(); |
