diff options
author | Juha Vuolle <[email protected]> | 2024-01-11 09:47:15 +0200 |
---|---|---|
committer | Marc Mutz <[email protected]> | 2024-01-30 03:39:46 +0000 |
commit | 26993046283605a806f34ba604e7dcef20f34ba5 (patch) | |
tree | 7226cb1b02196c29a18382ccec832b3993dba4b1 | |
parent | bd78ff024599d33cfcb411ff17727a0f4447bc7e (diff) |
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 <[email protected]>
Reviewed-by: MÃ¥rten Nordheim <[email protected]>
5 files changed, 31 insertions, 101 deletions
diff --git a/src/network/access/qrestaccessmanager.cpp b/src/network/access/qrestaccessmanager.cpp index aff6a048997..14ffaac6417 100644 --- a/src/network/access/qrestaccessmanager.cpp +++ b/src/network/access/qrestaccessmanager.cpp @@ -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 @@ -138,15 +138,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest") \li - \li - \row - \li QJsonArray *) - \li - - \li X - \li X - \li - - \li X - \li - - \li - - \row \li QVariantMap **) \li - \li X @@ -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* @@ -361,15 +342,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest") /*! \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, const ContextTypeForFunctor<Functor> *context, Functor &&callback) @@ -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 @@ -441,15 +412,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest") /*! \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, const ContextTypeForFunctor<Functor> *context, Functor &&callback) @@ -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, diff --git a/src/network/access/qrestaccessmanager.h b/src/network/access/qrestaccessmanager.h index bc92626d187..e65693e6a7b 100644 --- a/src/network/access/qrestaccessmanager.h +++ b/src/network/access/qrestaccessmanager.h @@ -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 *) diff --git a/src/network/access/qrestaccessmanager_p.h b/src/network/access/qrestaccessmanager_p.h index 08f1341a092..5a232ceadd7 100644 --- a/src/network/access/qrestaccessmanager_p.h +++ b/src/network/access/qrestaccessmanager_p.h @@ -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); } diff --git a/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp b/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp index 56f18beff65..8f9e00f4b62 100644 --- a/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp +++ b/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp @@ -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()) { diff --git a/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp b/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp index a19f73163ed..2e3ceac15a0 100644 --- a/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp +++ b/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp @@ -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); |