/** * OpenAPI Petstore * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. * * The version of the OpenAPI document: 1.0.0 * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ /** * Based on http://www.creativepulse.gr/en/blog/2014/restful-api-requests-using-qt-cpp-for-linux-mac-osx-ms-windows * By Alex Stylianos * **/ #ifndef PFX_HTTPREQUESTWORKER_H #define PFX_HTTPREQUESTWORKER_H #include #include #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) #include #endif #include "PFXHttpFileElement.h" namespace test_namespace { enum PFXHttpRequestVarLayout { NOT_SET, ADDRESS, URL_ENCODED, MULTIPART }; class PFXHttpRequestInput { public: QString url_str; QString http_method; PFXHttpRequestVarLayout var_layout; QMap vars; QMap headers; QList files; QByteArray request_body; PFXHttpRequestInput(); PFXHttpRequestInput(QString v_url_str, QString v_http_method); void initialize(); void add_var(QString key, QString value); void add_file(QString variable_name, QString local_filename, QString request_filename, QString mime_type); }; class PFXHttpRequestWorker : public QObject { Q_OBJECT public: explicit PFXHttpRequestWorker(QObject *parent = nullptr, QNetworkAccessManager *manager = nullptr); virtual ~PFXHttpRequestWorker(); QByteArray response; QNetworkReply::NetworkError error_type; QString error_str; QMap getResponseHeaders() const; QString http_attribute_encode(QString attribute_name, QString input); void execute(PFXHttpRequestInput *input); static QSslConfiguration *sslDefaultConfiguration; void setTimeOut(int timeOutMs); void setWorkingDirectory(const QString &path); PFXHttpFileElement getHttpFileElement(const QString &fieldname = QString()); QByteArray *getMultiPartField(const QString &fieldname = QString()); void setResponseCompressionEnabled(bool enable); void setRequestCompressionEnabled(bool enable); int getHttpResponseCode() const; signals: void on_execution_finished(PFXHttpRequestWorker *worker); private: enum PFXCompressionType{ Zlib, Gzip }; QNetworkAccessManager *manager; QMap headers; QMap files; QMap multiPartFields; QString workingDirectory; QTimer timeOutTimer; bool isResponseCompressionEnabled; bool isRequestCompressionEnabled; int httpResponseCode; #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) QRandomGenerator randomGenerator; #endif void on_reply_timeout(QNetworkReply *reply); void on_reply_finished(QNetworkReply *reply); void process_response(QNetworkReply *reply); QByteArray decompress(const QByteArray& data); QByteArray compress(const QByteArray& input, int level, PFXCompressionType compressType); }; } // namespace test_namespace #endif // PFX_HTTPREQUESTWORKER_H