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
* @param consumer - sublass of serversdk::Loger
* @param consumer - sublass of serversdk::Logger
*
* @code
* #include "core.h"
@ -90,7 +90,7 @@ public:
*/
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);
QList<serversdk::LoggerMessage> getNewMessages(int currentCount);

View File

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

View File

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

View File

@ -45,6 +45,11 @@ void RequestManager::processRequest(const std::shared_ptr<Request>& request)
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);
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);
request->logFinishTime();
mRequestMap.remove(reply);
reply->deleteLater();
emit request->finished();
emit downloadFinished(request);
});

View File

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