From fc9863c768f17454c1cde2fd0395a70eb59342ad Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 13 Feb 2024 17:45:38 +0100 Subject: [PATCH] NetworkQuery: Support more operations Make it possible to PUT, POST and DELETE. Add setWriteData() method, to be used with PUT and POST. Change-Id: I99da38b60120b7efdab391db9b4d638f17d555df Reviewed-by: hjk --- src/libs/solutions/tasking/networkquery.cpp | 15 ++++++++++++++- src/libs/solutions/tasking/networkquery.h | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/libs/solutions/tasking/networkquery.cpp b/src/libs/solutions/tasking/networkquery.cpp index b02bb9cea1c..335f79afd94 100644 --- a/src/libs/solutions/tasking/networkquery.cpp +++ b/src/libs/solutions/tasking/networkquery.cpp @@ -19,7 +19,20 @@ void NetworkQuery::start() emit done(DoneResult::Error); return; } - m_reply.reset(m_manager->get(m_request)); + switch (m_operation) { + case NetworkOperation::Get: + m_reply.reset(m_manager->get(m_request)); + break; + case NetworkOperation::Put: + m_reply.reset(m_manager->put(m_request, m_writeData)); + break; + case NetworkOperation::Post: + m_reply.reset(m_manager->post(m_request, m_writeData)); + break; + case NetworkOperation::Delete: + m_reply.reset(m_manager->deleteResource(m_request)); + break; + } connect(m_reply.get(), &QNetworkReply::finished, this, [this] { disconnect(m_reply.get(), &QNetworkReply::finished, this, nullptr); emit done(toDoneResult(m_reply->error() == QNetworkReply::NoError)); diff --git a/src/libs/solutions/tasking/networkquery.h b/src/libs/solutions/tasking/networkquery.h index bf08bd1e7b5..dd099dc7a88 100644 --- a/src/libs/solutions/tasking/networkquery.h +++ b/src/libs/solutions/tasking/networkquery.h @@ -22,6 +22,8 @@ namespace Tasking { // is independent on Qt::Network. // Possibly, it could be placed inside Qt::Network library, as a wrapper around QNetworkReply. +enum class NetworkOperation { Get, Put, Post, Delete }; + class TASKING_EXPORT NetworkQuery final : public QObject { Q_OBJECT @@ -29,6 +31,8 @@ class TASKING_EXPORT NetworkQuery final : public QObject public: ~NetworkQuery(); void setRequest(const QNetworkRequest &request) { m_request = request; } + void setOperation(NetworkOperation operation) { m_operation = operation; } + void setWriteData(const QByteArray &data) { m_writeData = data; } void setNetworkAccessManager(QNetworkAccessManager *manager) { m_manager = manager; } QNetworkReply *reply() const { return m_reply.get(); } void start(); @@ -39,6 +43,8 @@ signals: private: QNetworkRequest m_request; + NetworkOperation m_operation = NetworkOperation::Get; + QByteArray m_writeData; // Used by Put and Post QNetworkAccessManager *m_manager = nullptr; std::unique_ptr m_reply; };