added status() and networkReply() to Request

This commit is contained in:
Filip Bucek 2019-11-12 12:02:50 +01:00
parent a7831cae9c
commit a80552654b
5 changed files with 36 additions and 4 deletions

View File

@ -64,7 +64,7 @@ public:
/** /**
* @brief User specific consumer of logger messages * @brief User specific consumer of logger messages
* @param consumer - sublass of serversdk::Loger * @param consumer - sublass of serversdk::Logger
* *
* @code * @code
* #include "core.h" * #include "core.h"
@ -90,7 +90,7 @@ public:
*/ */
static void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg); static void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg);
/** Pusing messges from installed message handler */ /** Pushing messges from installed message handler */
virtual void pushMessage(const LoggerMessage& logmsg); virtual void pushMessage(const LoggerMessage& logmsg);
QList<serversdk::LoggerMessage> getNewMessages(int currentCount); QList<serversdk::LoggerMessage> getNewMessages(int currentCount);

View File

@ -13,6 +13,8 @@ Request::Request(QString type, QString url, QByteArray requestData)
Request::~Request() Request::~Request()
{ {
if (mNetworkReply)
mNetworkReply->deleteLater();
} }
QNetworkRequest Request::networkRequest() const QNetworkRequest Request::networkRequest() const
@ -36,12 +38,29 @@ QNetworkRequest Request::networkRequest() const
return request; return request;
} }
int Request::status() const
{
Q_ASSERT(mNetworkReply);
return mNetworkReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
}
void Request::appendData(const QByteArray &array) void Request::appendData(const QByteArray &array)
{ {
mResponseData += array; mResponseData += array;
} }
void Request::setNetworkReply(QNetworkReply *networkReply)
{
Q_ASSERT(networkReply);
mNetworkReply = networkReply;
}
QNetworkReply *Request::networkReply() const
{
return mNetworkReply;
}
QString Request::type() const QString Request::type() const
{ {
return mType; return mType;

View File

@ -3,6 +3,7 @@
#include <QString> #include <QString>
#include <QNetworkRequest> #include <QNetworkRequest>
#include <QDateTime> #include <QDateTime>
#include <QNetworkReply>
namespace serversdk { namespace serversdk {
@ -17,6 +18,9 @@ public:
virtual QNetworkRequest networkRequest() const; virtual QNetworkRequest networkRequest() const;
// Data handling data // Data handling data
int status() const;
QNetworkReply *networkReply() const;
void setNetworkReply(QNetworkReply *networkReply);
QByteArray requestData() const; QByteArray requestData() const;
void setRequestData(const QByteArray &requestData); void setRequestData(const QByteArray &requestData);
QByteArray responseData() const; QByteArray responseData() const;
@ -43,7 +47,6 @@ public:
void logStartTime() { mStartTime = QDateTime::currentDateTime(); } void logStartTime() { mStartTime = QDateTime::currentDateTime(); }
void logFinishTime() { mStartTime = QDateTime::currentDateTime(); } void logFinishTime() { mStartTime = QDateTime::currentDateTime(); }
private: private:
// Data handling // Data handling
void appendData(const QByteArray &array); void appendData(const QByteArray &array);
@ -62,12 +65,15 @@ private:
QString mToken; QString mToken;
// Data // Data
QNetworkReply *mNetworkReply = nullptr;
QByteArray mRequestData; QByteArray mRequestData;
QByteArray mResponseData; QByteArray mResponseData;
// Additional attributes // Additional attributes
QDateTime mStartTime; QDateTime mStartTime;
QDateTime mFinishTime; QDateTime mFinishTime;
}; };

View File

@ -45,6 +45,11 @@ void RequestManager::processRequest(const std::shared_ptr<Request>& request)
return; return;
} }
// Adding reply to final request
reply->setParent(nullptr); // ensure QNetworkreply wont be deleted by QNetworkAccessManager ( it is parent of reply )
request->setNetworkReply(reply);
// Add to map to get correct request when reply is used in signal
mRequestMap.insert(reply, request); mRequestMap.insert(reply, request);
connect(reply, &QNetworkReply::sslErrors, this, &RequestManager::sslErrors); connect(reply, &QNetworkReply::sslErrors, this, &RequestManager::sslErrors);
@ -54,7 +59,6 @@ void RequestManager::processRequest(const std::shared_ptr<Request>& request)
std::shared_ptr<Request> request = mRequestMap.value(reply); std::shared_ptr<Request> request = mRequestMap.value(reply);
request->logFinishTime(); request->logFinishTime();
mRequestMap.remove(reply); mRequestMap.remove(reply);
reply->deleteLater();
emit request->finished(); emit request->finished();
emit downloadFinished(request); emit downloadFinished(request);
}); });

View File

@ -109,12 +109,15 @@ void SoapTest::public_soap_test()
// RequestManagerdownload // RequestManagerdownload
RequestManager soap; RequestManager soap;
soap.processRequest(req); soap.processRequest(req);
QCOMPARE(req->status(), 0); // when not processed yet, status is 0
QSignalSpy progressSpy(&soap, &RequestManager::progresss); QSignalSpy progressSpy(&soap, &RequestManager::progresss);
QSignalSpy finishedSpy(&soap, &RequestManager::downloadFinished); QSignalSpy finishedSpy(&soap, &RequestManager::downloadFinished);
QVERIFY(finishedSpy.wait(20000)); QVERIFY(finishedSpy.wait(20000));
QVERIFY(progressSpy.count()); QVERIFY(progressSpy.count());
QCOMPARE(req->status(), 200);
//Uncoment to write .xml response to cmd folder //Uncoment to write .xml response to cmd folder
// QFile fileWrite(Utils::sourcePath("test/cmd/tst_soap-response.xml")); // QFile fileWrite(Utils::sourcePath("test/cmd/tst_soap-response.xml"));
// QVERIFY(fileWrite.open(QIODevice::WriteOnly)); // QVERIFY(fileWrite.open(QIODevice::WriteOnly));