forked from loafle/openapi-generator-original
* Update HttpRequest.cpp.mustache Use stable 4-parameter connect * add generated files * Revert "add generated files" This reverts commit 1d4e78aa0d42208b576354276c274000c29863f9. * catch download progress in HttpRequest and pass it to api * Update HttpRequest.cpp.mustache - clean mixed in changes Removed additional changes from other PullRequest * Update HttpRequest.cpp.mustache - replaced tabs by spaces * Update api-header.mustache - replaced tabs by spaces * Update HttpRequest.h.mustache - replaced tab by spaces * ran step 3 from Linux * changed downloadProgress to -nickname-DownloadProgress and added it to all regions where execution finish is connected * ran step 3 * replaced tab by spaces * ran step 3 * activate tracing to detect link issue * removed redundant connects and encapsulated changes in {{addDownloadProgress}} * added generated files from step 3 * remove cli-option for httprequest - this should be always there * added files from step 3 * improved name * Update samples-cpp-qt-client.yaml - fix parameter order * Update samples-cpp-qt-client.yaml
111 lines
3.2 KiB
C++
111 lines
3.2 KiB
C++
/**
|
|
* 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 <QMap>
|
|
#include <QNetworkAccessManager>
|
|
#include <QNetworkReply>
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QTimer>
|
|
#include <QRandomGenerator>
|
|
|
|
#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<QString, QString> vars;
|
|
QMap<QString, QString> headers;
|
|
QList<PFXHttpFileElement> 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<QString, QString> 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;
|
|
|
|
Q_SIGNALS:
|
|
void on_execution_finished(PFXHttpRequestWorker *worker);
|
|
void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
|
|
|
|
private:
|
|
enum PFXCompressionType{
|
|
Zlib,
|
|
Gzip
|
|
};
|
|
QNetworkAccessManager *manager;
|
|
QMap<QString, QString> headers;
|
|
QMap<QString, PFXHttpFileElement> files;
|
|
QMap<QString, QByteArray *> multiPartFields;
|
|
QString workingDirectory;
|
|
QTimer timeOutTimer;
|
|
bool isResponseCompressionEnabled;
|
|
bool isRequestCompressionEnabled;
|
|
int httpResponseCode;
|
|
QRandomGenerator randomGenerator;
|
|
|
|
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
|