diff options
author | Magdalena Stojek <[email protected]> | 2025-02-27 13:38:57 +0100 |
---|---|---|
committer | Magdalena Stojek <[email protected]> | 2025-03-28 16:43:06 +0100 |
commit | bf5fcd6ebe12f5ac2c87c3142c86d4de9446d98c (patch) | |
tree | 81cad9cbf9bbcd7105125eb440c0b484fc51808f | |
parent | c0a01ca6ad48b22cc73ccb72b0757d06b6a74b43 (diff) |
QHttpHeaders: Add setters for QDateTime
Added setDateTimeValue() convenience methods to QHttpHeaders, allowing
direct setting of headers with QDateTime values.
[ChangeLog][QtNetwork][QHttpHeaders] Added setDateTimeValue() methods
for setting headers using QDateTime.
Task-number: QTBUG-124766
Change-Id: I5804fa8946feaed1dfb4b37ec97a1a4461521995
Reviewed-by: Juha Vuolle <[email protected]>
Reviewed-by: Marc Mutz <[email protected]>
Reviewed-by: MÃ¥rten Nordheim <[email protected]>
-rw-r--r-- | src/network/access/qhttpheaders.cpp | 28 | ||||
-rw-r--r-- | src/network/access/qhttpheaders.h | 3 | ||||
-rw-r--r-- | tests/auto/network/access/qhttpheaders/tst_qhttpheaders.cpp | 8 |
3 files changed, 39 insertions, 0 deletions
diff --git a/src/network/access/qhttpheaders.cpp b/src/network/access/qhttpheaders.cpp index 3786a17ae23..8f662c59a68 100644 --- a/src/network/access/qhttpheaders.cpp +++ b/src/network/access/qhttpheaders.cpp @@ -1548,6 +1548,34 @@ std::optional<QDateTime> QHttpHeaders::dateTimeValue(WellKnownHeader name) const /*! \since 6.10 + Sets the value of the header name \a name to \a dateTime, + following the + \l {https://datatracker.ietf.org/doc/html/rfc9110#name-date-time-formats}{standard HTTP IMF-fixdate format}. + If the header does not exist, adds a new one. + + \sa dateTimeValue(QAnyStringView name), dateTimeValueAt(qsizetype i) + */ +void QHttpHeaders::setDateTimeValue(QAnyStringView name, const QDateTime &dateTime) +{ + if (!dateTime.isValid()) { + qWarning("QHttpHeaders::setDateTimeValue: invalid QDateTime value received"); + return; + } + replaceOrAppend(name, QNetworkHeadersPrivate::toHttpDate(dateTime)); +} + +/*! + \since 6.10 + \overload setDateTimeValue(QAnyStringView) +*/ +void QHttpHeaders::setDateTimeValue(WellKnownHeader name, const QDateTime &dateTime) +{ + setDateTimeValue(wellKnownHeaderName(name), dateTime); +} + +/*! + \since 6.10 + Returns all the header values of \a name in a list of QDateTime objects, following the standard HTTP date formats. If no valid date-time values are found, returns \c std::nullopt. diff --git a/src/network/access/qhttpheaders.h b/src/network/access/qhttpheaders.h index c9087724a64..23de782662d 100644 --- a/src/network/access/qhttpheaders.h +++ b/src/network/access/qhttpheaders.h @@ -262,6 +262,9 @@ public: Q_NETWORK_EXPORT std::optional<QDateTime> dateTimeValueAt(qsizetype i) const; + Q_NETWORK_EXPORT void setDateTimeValue(QAnyStringView name, const QDateTime &dateTime); + Q_NETWORK_EXPORT void setDateTimeValue(WellKnownHeader name, const QDateTime &dateTime); + Q_NETWORK_EXPORT qsizetype size() const noexcept; Q_NETWORK_EXPORT void reserve(qsizetype size); bool isEmpty() const noexcept { return size() == 0; } diff --git a/tests/auto/network/access/qhttpheaders/tst_qhttpheaders.cpp b/tests/auto/network/access/qhttpheaders/tst_qhttpheaders.cpp index dc21bf2dab3..e0b76308dfa 100644 --- a/tests/auto/network/access/qhttpheaders/tst_qhttpheaders.cpp +++ b/tests/auto/network/access/qhttpheaders/tst_qhttpheaders.cpp @@ -623,6 +623,14 @@ void tst_QHttpHeaders::dateTimeValues() QCOMPARE(dateTimeValueAtIndex->date(), QDate(2025, 2, 24)); QCOMPARE(dateTimeValueAtIndex->time(), QTime(11, 11, 11, 0)); + QDateTime dateTimeValue3{QDate{2049, 4, 3}, QTime{12, 30, 00, 0}}; + dateTimeValue3.setTimeZone(QTimeZone::UTC); + h1.setDateTimeValue("date", dateTimeValue3); + std::optional<QDateTime> setDateTimeValue = h1.dateTimeValue("date"); + QVERIFY(setDateTimeValue); + QCOMPARE(setDateTimeValue->date(), QDate(2049, 4, 3)); + QCOMPARE(setDateTimeValue->time(), QTime(12, 30, 00, 0)); + h1.clear(); h1.append("Date", "InvalidDateFormat"); h1.append("Date", ""); |