Take QJsonDocument as a parameter

Instead of separate QJsonObject and QJsonArray types.

Resulted from API-review

Pick-to: 6.7
Change-Id: I977d692d3709a8c3aa872683ddda54a143c25e67
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
bb10
Juha Vuolle 2024-01-11 09:47:15 +02:00 committed by Marc Mutz
parent bd78ff0245
commit 2699304628
5 changed files with 31 additions and 101 deletions

View File

@ -129,7 +129,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\li -
\li X
\row
\li QJsonObject *)
\li QJsonDocument *)
\li X
\li X
\li X
@ -137,15 +137,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\li X
\li -
\li -
\row
\li QJsonArray *)
\li -
\li X
\li X
\li -
\li X
\li -
\li -
\row
\li QVariantMap **)
\li -
@ -175,7 +166,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\li X
\endtable
*) QJsonObject and QJsonArray are sent in \l QJsonDocument::Compact format,
*) QJsonDocument is sent in \l QJsonDocument::Compact format,
and the \c Content-Type header is set to \c {application/json} if the
\c Content-Type header was not set
@ -226,7 +217,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::get(
const QNetworkRequest &request, const QJsonObject &data,
const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@ -244,7 +235,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(
const QNetworkRequest &request, const QJsonObject &data,
const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@ -263,8 +254,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
data types are supported:
\list
\li QByteArray
\li QJsonObject *)
\li QJsonArray *)
\li QJsonDocument *)
\li QVariantMap **)
\li QHttpMultiPart*
\li QIODevice*
@ -279,15 +269,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
*/
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(
const QNetworkRequest &request, const QJsonArray &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
\overload
*/
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(
const QNetworkRequest &request, const QVariantMap &data,
const ContextTypeForFunctor<Functor> *context,
@ -325,7 +307,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(
const QNetworkRequest &request, const QJsonObject &data,
const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@ -344,8 +326,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
data types are supported:
\list
\li QByteArray
\li QJsonObject *)
\li QJsonArray *)
\li QJsonDocument *)
\li QVariantMap **)
\li QHttpMultiPart*
\li QIODevice*
@ -359,15 +340,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\sa QRestReply
*/
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(
const QNetworkRequest &request, const QJsonArray &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
\overload
*/
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(
const QNetworkRequest &request, const QVariantMap &data,
@ -406,7 +378,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(
const QNetworkRequest &request, const QJsonObject &data,
const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@ -425,8 +397,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
data types are supported:
\list
\li QByteArray
\li QJsonObject *)
\li QJsonArray *)
\li QJsonDocument *)
\li QVariantMap **)
\li QIODevice*
\endlist
@ -439,15 +410,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\sa QRestReply
*/
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(
const QNetworkRequest &request, const QJsonArray &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
\overload
*/
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(
const QNetworkRequest &request, const QVariantMap &data,
@ -595,16 +557,7 @@ QRestAccessManagerPrivate::~QRestAccessManagerPrivate()
}
QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &request,
const QJsonObject &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
return d->executeRequest([&](auto req, auto json) { return d->qnam->post(req, json); },
data, request, context, slot);
}
QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &request,
const QJsonArray &data, const QObject *context,
const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@ -616,7 +569,7 @@ QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &reque
const QVariantMap &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
return postWithDataImpl(request, QJsonObject::fromVariantMap(data), context, slot);
return postWithDataImpl(request, QJsonDocument::fromVariant(data), context, slot);
}
QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &request,
@ -659,7 +612,7 @@ QNetworkReply *QRestAccessManager::getWithDataImpl(const QNetworkRequest &reques
}
QNetworkReply *QRestAccessManager::getWithDataImpl(const QNetworkRequest &request,
const QJsonObject &data, const QObject *context,
const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@ -690,16 +643,7 @@ QNetworkReply *QRestAccessManager::headNoDataImpl(const QNetworkRequest &request
}
QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &request,
const QJsonObject &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
return d->executeRequest([&](auto req, auto json) { return d->qnam->put(req, json); },
data, request, context, slot);
}
QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &request,
const QJsonArray &data, const QObject *context,
const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@ -711,7 +655,7 @@ QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &reques
const QVariantMap &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
return putWithDataImpl(request, QJsonObject::fromVariantMap(data), context, slot);
return putWithDataImpl(request, QJsonDocument::fromVariant(data), context, slot);
}
QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &request,
@ -740,17 +684,7 @@ QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &reques
static const auto PATCH = "PATCH"_ba;
QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &request,
const QJsonObject &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
return d->executeRequest(
[&](auto req, auto json){ return d->qnam->sendCustomRequest(req, PATCH, json); },
data, request, context, slot);
}
QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &request,
const QJsonArray &data, const QObject *context,
const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@ -763,7 +697,7 @@ QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &requ
const QVariantMap &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
return patchWithDataImpl(request, QJsonObject::fromVariantMap(data), context, slot);
return patchWithDataImpl(request, QJsonDocument::fromVariant(data), context, slot);
}
QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &request,

View File

@ -89,22 +89,19 @@ public:
QREST_METHOD_NO_DATA(head)
QREST_METHOD_NO_DATA(get)
QREST_METHOD_WITH_DATA(get, const QByteArray &)
QREST_METHOD_WITH_DATA(get, const QJsonObject &)
QREST_METHOD_WITH_DATA(get, const QJsonDocument &)
QREST_METHOD_WITH_DATA(get, QIODevice *)
QREST_METHOD_WITH_DATA(post, const QJsonObject &)
QREST_METHOD_WITH_DATA(post, const QJsonArray &)
QREST_METHOD_WITH_DATA(post, const QJsonDocument &)
QREST_METHOD_WITH_DATA(post, const QVariantMap &)
QREST_METHOD_WITH_DATA(post, const QByteArray &)
QREST_METHOD_WITH_DATA(post, QHttpMultiPart *)
QREST_METHOD_WITH_DATA(post, QIODevice *)
QREST_METHOD_WITH_DATA(put, const QJsonObject &)
QREST_METHOD_WITH_DATA(put, const QJsonArray &)
QREST_METHOD_WITH_DATA(put, const QJsonDocument &)
QREST_METHOD_WITH_DATA(put, const QVariantMap &)
QREST_METHOD_WITH_DATA(put, const QByteArray &)
QREST_METHOD_WITH_DATA(put, QHttpMultiPart *)
QREST_METHOD_WITH_DATA(put, QIODevice *)
QREST_METHOD_WITH_DATA(patch, const QJsonObject &)
QREST_METHOD_WITH_DATA(patch, const QJsonArray &)
QREST_METHOD_WITH_DATA(patch, const QJsonDocument &)
QREST_METHOD_WITH_DATA(patch, const QVariantMap &)
QREST_METHOD_WITH_DATA(patch, const QByteArray &)
QREST_METHOD_WITH_DATA(patch, QIODevice *)

View File

@ -49,8 +49,8 @@ public:
return createActiveRequest(reply, context, slot);
}
template<typename Functor, typename Json>
QNetworkReply *executeRequest(Functor requestOperation, Json jsonData,
template<typename Functor>
QNetworkReply *executeRequest(Functor requestOperation, const QJsonDocument &jsonDoc,
const QNetworkRequest &request,
const QObject *context, QtPrivate::QSlotObjectBase *slot)
{
@ -62,8 +62,7 @@ public:
req.setHeader(QNetworkRequest::ContentTypeHeader,
QLatin1StringView{"application/json"});
}
QJsonDocument json(jsonData);
QNetworkReply *reply = requestOperation(req, json.toJson(QJsonDocument::Compact));
QNetworkReply *reply = requestOperation(req, jsonDoc.toJson(QJsonDocument::Compact));
return createActiveRequest(reply, context, slot);
}

View File

@ -25,7 +25,7 @@ manager->get(request, this, &MyClass::handleFinished);
//! [2]
QJsonObject myJson;
QJsonDocument myJson;
// ...
manager->post(request, myJson, this, [this](QRestReply &reply) {
if (!reply.isSuccess()) {

View File

@ -146,7 +146,7 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodGET);
QCOMPARE(serverSideRequest.body, byteArrayData);
manager.get(request, jsonObjectData, this, callback);
manager.get(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodGET);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
@ -175,11 +175,11 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodPOST);
QCOMPARE(serverSideRequest.body, byteArrayData);
manager.post(request, jsonObjectData, this, callback);
manager.post(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodPOST);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
manager.post(request, jsonArrayData, this, callback);
manager.post(request, QJsonDocument{jsonArrayData}, this, callback);
VERIFY_REPLY_OK(methodPOST);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).array(), jsonArrayData);
@ -203,11 +203,11 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodPUT);
QCOMPARE(serverSideRequest.body, byteArrayData);
manager.put(request, jsonObjectData, this, callback);
manager.put(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodPUT);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
manager.put(request, jsonArrayData, this, callback);
manager.put(request, QJsonDocument{jsonArrayData}, this, callback);
VERIFY_REPLY_OK(methodPUT);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).array(), jsonArrayData);
@ -231,11 +231,11 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodPATCH);
QCOMPARE(serverSideRequest.body, byteArrayData);
manager.patch(request, jsonObjectData, this, callback);
manager.patch(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodPATCH);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
manager.patch(request, jsonArrayData, this, callback);
manager.patch(request, QJsonDocument{jsonArrayData}, this, callback);
VERIFY_REPLY_OK(methodPATCH);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).array(), jsonArrayData);