#pragma once #include #include #include #include #include namespace serversdk { class Request : public QObject { Q_OBJECT friend class RequestManager; friend class RequestTest; public: Request() = default; ~Request() override; Request(QString type, QString url, QByteArray requestData = QByteArray()); 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; // Attributes QString url() const; void setUrl(const QString &url); QString type() const; void setType(const QString &type); // Authorization QString userName() const; void setUserName(const QString &userName); QString password() const; void setPassword(const QString &password); QString token() const; void setToken(const QString &token); // Authorization headers QString basicAuthorization() const; QString bearerAuthorization() const; private: // Additional attributes void logStartTime() { mStartTime = QDateTime::currentDateTime(); } void logFinishTime() { mFinishTime = QDateTime::currentDateTime(); } // Data handling void appendResponseData(const QByteArray &array); signals: void finished(std::shared_ptr request); private: QString mType = "GET"; // POST, GET QString mUrl; // Authorization QString mUserName; QString mPassword; QString mToken; // Data QNetworkReply *mNetworkReply = nullptr; QByteArray mRequestData; QByteArray mResponseData; // Additional attributes QDateTime mStartTime; QDateTime mFinishTime; }; } // core QDebug operator<<(QDebug dbg, serversdk::Request *request);