Alofredo 3bfd6de327
[cpp][Qt5] Add the ability to pass QNetworkAccessManager as a parameter (#6053)
* [C++][Qt5] Add the ability to pass QNetworkAccessManager as a parameter
* connect to QNetworkReply::finished instead of QNetworkAccessManager::finished

* [C++][Qt5] regen samples for cpp-qt5-client

* [C++][Qt5] disconect from reply by timeout

* [C++][Qt5] regen samples for cpp-qt5-client

Co-authored-by: alfredotg <alfredotg@tu.ru>
2020-05-07 08:05:29 +02:00

452 lines
17 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.
*/
#include "PFXUserApi.h"
#include "PFXHelpers.h"
#include <QJsonArray>
#include <QJsonDocument>
namespace test_namespace {
PFXUserApi::PFXUserApi(const QString &scheme, const QString &host, int port, const QString &basePath, const int timeOut)
: _scheme(scheme),
_host(host),
_port(port),
_basePath(basePath),
_timeOut(timeOut),
_manager(nullptr),
isResponseCompressionEnabled(false),
isRequestCompressionEnabled(false) {}
PFXUserApi::~PFXUserApi() {
}
void PFXUserApi::setScheme(const QString &scheme) {
_scheme = scheme;
}
void PFXUserApi::setHost(const QString &host) {
_host = host;
}
void PFXUserApi::setPort(int port) {
_port = port;
}
void PFXUserApi::setBasePath(const QString &basePath) {
_basePath = basePath;
}
void PFXUserApi::setTimeOut(const int timeOut) {
_timeOut = timeOut;
}
void PFXUserApi::setWorkingDirectory(const QString &path) {
_workingDirectory = path;
}
void PFXUserApi::setNetworkAccessManager(QNetworkAccessManager* manager) {
_manager = manager;
}
void PFXUserApi::addHeaders(const QString &key, const QString &value) {
defaultHeaders.insert(key, value);
}
void PFXUserApi::enableRequestCompression() {
isRequestCompressionEnabled = true;
}
void PFXUserApi::enableResponseCompression() {
isResponseCompressionEnabled = true;
}
void PFXUserApi::abortRequests(){
emit abortRequestsSignal();
}
void PFXUserApi::createUser(const PFXUser &body) {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user");
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "POST");
QString output = body.asJson();
input.request_body.append(output);
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::createUserCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::createUserCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit createUserSignal();
emit createUserSignalFull(worker);
} else {
emit createUserSignalE(error_type, error_str);
emit createUserSignalEFull(worker, error_type, error_str);
}
}
void PFXUserApi::createUsersWithArrayInput(const QList<PFXUser> &body) {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user/createWithArray");
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "POST");
QJsonDocument doc(::test_namespace::toJsonValue(body).toArray());
QByteArray bytes = doc.toJson();
input.request_body.append(bytes);
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::createUsersWithArrayInputCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::createUsersWithArrayInputCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit createUsersWithArrayInputSignal();
emit createUsersWithArrayInputSignalFull(worker);
} else {
emit createUsersWithArrayInputSignalE(error_type, error_str);
emit createUsersWithArrayInputSignalEFull(worker, error_type, error_str);
}
}
void PFXUserApi::createUsersWithListInput(const QList<PFXUser> &body) {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user/createWithList");
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "POST");
QJsonDocument doc(::test_namespace::toJsonValue(body).toArray());
QByteArray bytes = doc.toJson();
input.request_body.append(bytes);
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::createUsersWithListInputCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::createUsersWithListInputCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit createUsersWithListInputSignal();
emit createUsersWithListInputSignalFull(worker);
} else {
emit createUsersWithListInputSignalE(error_type, error_str);
emit createUsersWithListInputSignalEFull(worker, error_type, error_str);
}
}
void PFXUserApi::deleteUser(const QString &username) {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user/{username}");
QString usernamePathParam("{");
usernamePathParam.append("username").append("}");
fullPath.replace(usernamePathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(username)));
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "DELETE");
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::deleteUserCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::deleteUserCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit deleteUserSignal();
emit deleteUserSignalFull(worker);
} else {
emit deleteUserSignalE(error_type, error_str);
emit deleteUserSignalEFull(worker, error_type, error_str);
}
}
void PFXUserApi::getUserByName(const QString &username) {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user/{username}");
QString usernamePathParam("{");
usernamePathParam.append("username").append("}");
fullPath.replace(usernamePathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(username)));
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "GET");
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::getUserByNameCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::getUserByNameCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
PFXUser output(QString(worker->response));
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit getUserByNameSignal(output);
emit getUserByNameSignalFull(worker, output);
} else {
emit getUserByNameSignalE(output, error_type, error_str);
emit getUserByNameSignalEFull(worker, error_type, error_str);
}
}
void PFXUserApi::loginUser(const QString &username, const QString &password) {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user/login");
if (fullPath.indexOf("?") > 0)
fullPath.append("&");
else
fullPath.append("?");
fullPath.append(QUrl::toPercentEncoding("username")).append("=").append(QUrl::toPercentEncoding(::test_namespace::toStringValue(username)));
if (fullPath.indexOf("?") > 0)
fullPath.append("&");
else
fullPath.append("?");
fullPath.append(QUrl::toPercentEncoding("password")).append("=").append(QUrl::toPercentEncoding(::test_namespace::toStringValue(password)));
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "GET");
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::loginUserCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::loginUserCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
QString output;
::test_namespace::fromStringValue(QString(worker->response), output);
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit loginUserSignal(output);
emit loginUserSignalFull(worker, output);
} else {
emit loginUserSignalE(output, error_type, error_str);
emit loginUserSignalEFull(worker, error_type, error_str);
}
}
void PFXUserApi::logoutUser() {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user/logout");
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "GET");
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::logoutUserCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::logoutUserCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit logoutUserSignal();
emit logoutUserSignalFull(worker);
} else {
emit logoutUserSignalE(error_type, error_str);
emit logoutUserSignalEFull(worker, error_type, error_str);
}
}
void PFXUserApi::updateUser(const QString &username, const PFXUser &body) {
QString fullPath = QString("%1://%2%3%4%5")
.arg(_scheme)
.arg(_host)
.arg(_port ? ":" + QString::number(_port) : "")
.arg(_basePath)
.arg("/user/{username}");
QString usernamePathParam("{");
usernamePathParam.append("username").append("}");
fullPath.replace(usernamePathParam, QUrl::toPercentEncoding(::test_namespace::toStringValue(username)));
PFXHttpRequestWorker *worker = new PFXHttpRequestWorker(this, _manager);
worker->setTimeOut(_timeOut);
worker->setWorkingDirectory(_workingDirectory);
PFXHttpRequestInput input(fullPath, "PUT");
QString output = body.asJson();
input.request_body.append(output);
foreach (QString key, this->defaultHeaders.keys()) { input.headers.insert(key, this->defaultHeaders.value(key)); }
connect(worker, &PFXHttpRequestWorker::on_execution_finished, this, &PFXUserApi::updateUserCallback);
connect(this, &PFXUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
worker->execute(&input);
}
void PFXUserApi::updateUserCallback(PFXHttpRequestWorker *worker) {
QString msg;
QString error_str = worker->error_str;
QNetworkReply::NetworkError error_type = worker->error_type;
if (worker->error_type == QNetworkReply::NoError) {
msg = QString("Success! %1 bytes").arg(worker->response.length());
} else {
msg = "Error: " + worker->error_str;
error_str = QString("%1, %2").arg(worker->error_str).arg(QString(worker->response));
}
worker->deleteLater();
if (worker->error_type == QNetworkReply::NoError) {
emit updateUserSignal();
emit updateUserSignalFull(worker);
} else {
emit updateUserSignalE(error_type, error_str);
emit updateUserSignalEFull(worker, error_type, error_str);
}
}
} // namespace test_namespace