forked from qt-creator/qt-creator
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 <hjk@qt.io>
This commit is contained in:
@@ -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));
|
||||
|
@@ -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<QNetworkReply> m_reply;
|
||||
};
|
||||
|
Reference in New Issue
Block a user