mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 15:30:36 +02:00
Migration to mysql and update request auth
This commit is contained in:
parent
cca1851386
commit
8aa786fa51
2
.gitignore
vendored
2
.gitignore
vendored
@ -33,7 +33,7 @@ __pycache__
|
|||||||
# Python
|
# Python
|
||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
# CMake
|
# cmake
|
||||||
|
|
||||||
*.txt.user
|
*.txt.user
|
||||||
*.txt.user.*
|
*.txt.user.*
|
||||||
|
|||||||
@ -63,6 +63,30 @@ bool DatabaseManager::openPostgres(const QString &host, const QString &dbName, c
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DatabaseManager::openMysql(const QString &host, const QString &dbName, const QString &user, const QString &password, const QString &connectionName)
|
||||||
|
{
|
||||||
|
Q_ASSERT_X(mConnectionName.isEmpty(), "open postgres", "Expecting only one database per DatabaseManager");
|
||||||
|
mConnectionName = connectionName;
|
||||||
|
mDatabase = QSqlDatabase::addDatabase("QMYSQL", mConnectionName);
|
||||||
|
|
||||||
|
mDatabase.setDatabaseName(dbName);
|
||||||
|
mDatabase.setHostName(host);
|
||||||
|
mDatabase.setUserName(user);
|
||||||
|
// Froward testing -->>
|
||||||
|
mDatabase.setPort(3308);
|
||||||
|
mDatabase.setPassword(password);
|
||||||
|
// @see https://www.qtcentre.org/threads/39913-QSqlDatabase-connection-timeout
|
||||||
|
|
||||||
|
int res = mDatabase.open();
|
||||||
|
|
||||||
|
if (!res) {
|
||||||
|
qInfo(sdkdb) << "Not possible to open database from url:" << host;
|
||||||
|
qInfo(sdkdb) << "Error:" << mDatabase.lastError().text();
|
||||||
|
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool DatabaseManager::isValid() const
|
bool DatabaseManager::isValid() const
|
||||||
{
|
{
|
||||||
@ -93,10 +117,10 @@ QSqlQuery DatabaseManager::executeQuery(QSqlQuery &query, const QString &sqlText
|
|||||||
// isSelect is needed for correct bahaviour of 'dryMode' only select should be executed
|
// isSelect is needed for correct bahaviour of 'dryMode' only select should be executed
|
||||||
QString sqlStatement = sqlText;
|
QString sqlStatement = sqlText;
|
||||||
bool isSelect = false;
|
bool isSelect = false;
|
||||||
if ( sqlText.isEmpty()) {
|
if ( sqlStatement.isEmpty()) {
|
||||||
sqlStatement = getLastQuery(query);
|
sqlStatement = getLastQuery(query);
|
||||||
}
|
}
|
||||||
if (sqlText.startsWith("SELECT", Qt::CaseInsensitive)) {
|
if (sqlStatement.startsWith("SELECT", Qt::CaseInsensitive)) {
|
||||||
isSelect = true;
|
isSelect = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,7 @@ public:
|
|||||||
|
|
||||||
bool openSQLite(const QString &path, const QString &connectionName = QStringLiteral("qt_sql_default_connection"));
|
bool openSQLite(const QString &path, const QString &connectionName = QStringLiteral("qt_sql_default_connection"));
|
||||||
bool openPostgres(const QString& host, const QString& dbName, const QString& user, const QString& password, const QString &connectionName = QStringLiteral("qt_sql_default_connection"));
|
bool openPostgres(const QString& host, const QString& dbName, const QString& user, const QString& password, const QString &connectionName = QStringLiteral("qt_sql_default_connection"));
|
||||||
|
bool openMysql(const QString &host, const QString &dbName, const QString &user, const QString &password, const QString &connectionName = QStringLiteral("qt_sql_default_connection"));
|
||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
bool isOpen() const;
|
bool isOpen() const;
|
||||||
void close();
|
void close();
|
||||||
|
|||||||
@ -35,6 +35,7 @@ QByteArray DatabaseTable::jsonData(const QSet<QString> &filters) const
|
|||||||
bool DatabaseTable::fromJson(const QByteArray &data)
|
bool DatabaseTable::fromJson(const QByteArray &data)
|
||||||
{
|
{
|
||||||
// in: JSON ( e.g. {"id": 300} )
|
// in: JSON ( e.g. {"id": 300} )
|
||||||
|
qDebug(sdkdb) << "Response:" << data;
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(data);
|
QJsonDocument doc = QJsonDocument::fromJson(data);
|
||||||
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
|
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
|
||||||
|
|
||||||
|
|||||||
@ -160,9 +160,17 @@ qint64 Request::getProcessTime()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Request::addHeader(const QString &name, const QString &value)
|
||||||
|
{
|
||||||
|
header.insert(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
} // core
|
} // core
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QDebug operator <<(QDebug dbg, serversdk::Request *request)
|
QDebug operator <<(QDebug dbg, serversdk::Request *request)
|
||||||
{
|
{
|
||||||
dbg.noquote() << request->type() << request->url() << "data:" << request->requestData() << "header:" << request->networkReply()->rawHeaderList();
|
dbg.noquote() << request->type() << request->url() << "data:" << request->requestData() << "header:" << request->networkReply()->rawHeaderList();
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
namespace serversdk {
|
namespace serversdk {
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ public:
|
|||||||
void setRequestData(const QByteArray &requestData);
|
void setRequestData(const QByteArray &requestData);
|
||||||
QByteArray responseData() const;
|
QByteArray responseData() const;
|
||||||
|
|
||||||
|
|
||||||
// Attributes
|
// Attributes
|
||||||
QString url() const;
|
QString url() const;
|
||||||
void setUrl(const QString &url);
|
void setUrl(const QString &url);
|
||||||
@ -46,6 +48,10 @@ public:
|
|||||||
|
|
||||||
qint64 getProcessTime();
|
qint64 getProcessTime();
|
||||||
|
|
||||||
|
QMap<QString,QString> getHeaders() { return header;}
|
||||||
|
void addHeader(const QString &name, const QString &value);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Additional attributes
|
// Additional attributes
|
||||||
@ -72,6 +78,8 @@ private:
|
|||||||
QByteArray mRequestData;
|
QByteArray mRequestData;
|
||||||
QByteArray mResponseData;
|
QByteArray mResponseData;
|
||||||
|
|
||||||
|
QMap<QString, QString> header;
|
||||||
|
|
||||||
// Additional attributes
|
// Additional attributes
|
||||||
QDateTime mStartTime;
|
QDateTime mStartTime;
|
||||||
QDateTime mFinishTime;
|
QDateTime mFinishTime;
|
||||||
|
|||||||
@ -32,24 +32,37 @@ bool RequestManager::processRequest(const std::shared_ptr<Request>& request)
|
|||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
request->logStartTime();
|
request->logStartTime();
|
||||||
|
|
||||||
|
auto req = request->networkRequest();
|
||||||
|
if (!request->getHeaders().empty()) {
|
||||||
|
auto headers = request->getHeaders();
|
||||||
|
auto keys = headers.keys();
|
||||||
|
foreach (auto key, keys) {
|
||||||
|
req.setRawHeader(key.toLocal8Bit(), headers.value(key).toLocal8Bit());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (request->type() == "POST") {
|
if (request->type() == "POST") {
|
||||||
if ( request->requestData().isEmpty()) {
|
if ( request->requestData().isEmpty()) {
|
||||||
qCWarning(sdknetwork) << "Request data is empty -> nothing to send";
|
qCWarning(sdknetwork) << "Request data is empty -> nothing to send";
|
||||||
}
|
}
|
||||||
reply = mNetworkAccessManager.post(request->networkRequest(), request->requestData());
|
reply = mNetworkAccessManager.post(req, request->requestData());
|
||||||
} else if (request->type() == "GET") {
|
} else if (request->type() == "GET") {
|
||||||
if ( ! request->requestData().isEmpty()) {
|
if ( ! request->requestData().isEmpty()) {
|
||||||
qCWarning(sdknetwork) << "Request data is not empty, and you are trying to use get ( not sending any data)";
|
qCWarning(sdknetwork) << "Request data is not empty, and you are trying to use get ( not sending any data)";
|
||||||
}
|
}
|
||||||
reply = mNetworkAccessManager.get(request->networkRequest());
|
reply = mNetworkAccessManager.get(req);
|
||||||
} else if (request->type() == "PUT") {
|
} else if (request->type() == "PUT") {
|
||||||
reply = mNetworkAccessManager.put(request->networkRequest(), request->requestData());
|
reply = mNetworkAccessManager.put(req, request->requestData());
|
||||||
} else {
|
} else {
|
||||||
qCritical(sdknetwork) << "Using request type:" << request->type() << "is not implemented";
|
qCritical(sdknetwork) << "Using request type:" << request->type() << "is not implemented";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach (auto header, reply->request().rawHeaderList()) {
|
||||||
|
qDebug(sdknetwork) << header << ":" << reply->request().rawHeader(header);
|
||||||
|
}
|
||||||
|
|
||||||
Q_ASSERT(reply);
|
Q_ASSERT(reply);
|
||||||
// Adding reply to final request
|
// Adding reply to final request
|
||||||
reply->setParent(nullptr); // ensure QNetworkreply wont be deleted by QNetworkAccessManager ( it is parent of reply )
|
reply->setParent(nullptr); // ensure QNetworkreply wont be deleted by QNetworkAccessManager ( it is parent of reply )
|
||||||
@ -112,6 +125,8 @@ void RequestManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
|
|||||||
}
|
}
|
||||||
QByteArray data = reply->readAll();
|
QByteArray data = reply->readAll();
|
||||||
|
|
||||||
|
qDebug(sdknetwork) << data;
|
||||||
|
|
||||||
// Decompress gzip data
|
// Decompress gzip data
|
||||||
#ifdef CORESDK_ZLIB
|
#ifdef CORESDK_ZLIB
|
||||||
if (encoding.toLower() == "gzip" && !data.isEmpty() ) {
|
if (encoding.toLower() == "gzip" && !data.isEmpty() ) {
|
||||||
|
|||||||
@ -40,4 +40,6 @@ private:
|
|||||||
bool mIgnoreSsl = false;
|
bool mIgnoreSsl = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // core
|
} // core
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user