diff options
author | Lena Biliaieva <lena.biliaieva@qt.io> | 2024-03-08 18:10:02 +0100 |
---|---|---|
committer | Lena Biliaieva <lena.biliaieva@qt.io> | 2024-04-29 18:26:15 +0200 |
commit | fa456ad5501dc74446329222d12ba0fa2ecd0457 (patch) | |
tree | 36814db3bb0fa48ebd26e2098df8927aeacaf3a8 /src/network/access/qnetworkrequest.cpp | |
parent | 979836382e3721ff5fe47b6a94a68abd70ebbd2d (diff) |
Add QHttpHeaders to QNetworkRequest
Added headers() and setHeaders() methods to QNetworkRequest.
[ChangeLog][QtNetwork][QNetworkRequest] Added headers() and setHeaders()
methods to QNetworkRequest, which provide an interface to work with
QHttpHeaders.
Task-number: QTBUG-107751
Change-Id: I2e1dc7cb2efab5903eb7ff23b75d01aefe13273d
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 | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index 6f5a7ff19a..ad83dd38e3 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -6,6 +6,7 @@ #include "qplatformdefs.h" #include "qnetworkcookie.h" #include "qsslconfiguration.h" +#include "qhttpheadershelper_p.h" #if QT_CONFIG(http) #include "qhttp1configuration.h" #include "qhttp2configuration.h" @@ -475,6 +476,7 @@ public: && decompressedSafetyCheckThreshold == other.decompressedSafetyCheckThreshold #endif && transferTimeout == other.transferTimeout + && QHttpHeadersHelper::compareStrict(httpHeaders, other.httpHeaders) ; // don't compare cookedHeaders } @@ -601,6 +603,43 @@ void QNetworkRequest::setUrl(const QUrl &url) } /*! + \since 6.8 + + Returns headers that are set in this network request. + + \sa setHeaders() +*/ +QHttpHeaders QNetworkRequest::headers() const +{ + return d->headers(); +} + +/*! + \since 6.8 + + Sets \a newHeaders as headers in this network request, overriding + any previously set headers. + + If some headers correspond to the known headers, the values will + be parsed and the corresponding parsed form will also be set. + + \sa headers(), KnownHeaders +*/ +void QNetworkRequest::setHeaders(QHttpHeaders &&newHeaders) +{ + d->setHeaders(std::move(newHeaders)); +} + +/*! + \overload + \since 6.8 +*/ +void QNetworkRequest::setHeaders(const QHttpHeaders &newHeaders) +{ + d->setHeaders(newHeaders); +} + +/*! Returns the value of the known network header \a header if it is present in this request. If it is not present, returns QVariant() (i.e., an invalid variant). @@ -1401,6 +1440,33 @@ void QNetworkHeadersPrivate::setCookedHeader(QNetworkRequest::KnownHeaders heade } } +QHttpHeaders QNetworkHeadersPrivate::headers() const +{ + return httpHeaders; +} + +void QNetworkHeadersPrivate::setHeaders(const QHttpHeaders &newHeaders) +{ + httpHeaders = newHeaders; +} + +void QNetworkHeadersPrivate::setHeaders(QHttpHeaders &&newHeaders) +{ + httpHeaders = std::move(newHeaders); +} + +void QNetworkHeadersPrivate::setHeader(QHttpHeaders::WellKnownHeader name, QByteArrayView value) +{ + httpHeaders.replaceOrAppend(name, value); +} + +void QNetworkHeadersPrivate::clearHeaders() +{ + httpHeaders.clear(); + rawHeaders.clear(); + cookedHeaders.clear(); +} + void QNetworkHeadersPrivate::setRawHeaderInternal(const QByteArray &key, const QByteArray &value) { auto firstEqualsKey = [&key](const RawHeaderPair &header) { |