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 <juha.vuolle@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Magdalena Stojek 2025-02-27 13:38:57 +01:00
parent c0a01ca6ad
commit bf5fcd6ebe
3 changed files with 39 additions and 0 deletions

View File

@ -1545,6 +1545,34 @@ std::optional<QDateTime> QHttpHeaders::dateTimeValue(WellKnownHeader name) const
return dateTimeValue(wellKnownHeaderName(name));
}
/*!
\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

View File

@ -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; }

View File

@ -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", "");