summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMagdalena Stojek <[email protected]>2025-02-27 13:38:57 +0100
committerMagdalena Stojek <[email protected]>2025-03-28 16:43:06 +0100
commitbf5fcd6ebe12f5ac2c87c3142c86d4de9446d98c (patch)
tree81cad9cbf9bbcd7105125eb440c0b484fc51808f
parentc0a01ca6ad48b22cc73ccb72b0757d06b6a74b43 (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.cpp28
-rw-r--r--src/network/access/qhttpheaders.h3
-rw-r--r--tests/auto/network/access/qhttpheaders/tst_qhttpheaders.cpp8
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", "");