mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 18:10:49 +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
|
||||
*.pyc
|
||||
|
||||
# CMake
|
||||
# cmake
|
||||
|
||||
*.txt.user
|
||||
*.txt.user.*
|
||||
|
||||
@ -63,6 +63,30 @@ bool DatabaseManager::openPostgres(const QString &host, const QString &dbName, c
|
||||
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
|
||||
{
|
||||
@ -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
|
||||
QString sqlStatement = sqlText;
|
||||
bool isSelect = false;
|
||||
if ( sqlText.isEmpty()) {
|
||||
if ( sqlStatement.isEmpty()) {
|
||||
sqlStatement = getLastQuery(query);
|
||||
}
|
||||
if (sqlText.startsWith("SELECT", Qt::CaseInsensitive)) {
|
||||
if (sqlStatement.startsWith("SELECT", Qt::CaseInsensitive)) {
|
||||
isSelect = true;
|
||||
}
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@ public:
|
||||
|
||||
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 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 isOpen() const;
|
||||
void close();
|
||||
|
||||
@ -35,6 +35,7 @@ QByteArray DatabaseTable::jsonData(const QSet<QString> &filters) const
|
||||
bool DatabaseTable::fromJson(const QByteArray &data)
|
||||
{
|
||||
// in: JSON ( e.g. {"id": 300} )
|
||||
qDebug(sdkdb) << "Response:" << data;
|
||||
QJsonDocument doc = QJsonDocument::fromJson(data);
|
||||
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
|
||||
|
||||
|
||||
@ -160,9 +160,17 @@ qint64 Request::getProcessTime()
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
void Request::addHeader(const QString &name, const QString &value)
|
||||
{
|
||||
header.insert(name, value);
|
||||
}
|
||||
|
||||
} // core
|
||||
|
||||
|
||||
|
||||
|
||||
QDebug operator <<(QDebug dbg, serversdk::Request *request)
|
||||
{
|
||||
dbg.noquote() << request->type() << request->url() << "data:" << request->requestData() << "header:" << request->networkReply()->rawHeaderList();
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
#include <QDateTime>
|
||||
#include <QNetworkReply>
|
||||
#include <memory>
|
||||
#include <QMap>
|
||||
|
||||
namespace serversdk {
|
||||
|
||||
@ -26,6 +27,7 @@ public:
|
||||
void setRequestData(const QByteArray &requestData);
|
||||
QByteArray responseData() const;
|
||||
|
||||
|
||||
// Attributes
|
||||
QString url() const;
|
||||
void setUrl(const QString &url);
|
||||
@ -46,6 +48,10 @@ public:
|
||||
|
||||
qint64 getProcessTime();
|
||||
|
||||
QMap<QString,QString> getHeaders() { return header;}
|
||||
void addHeader(const QString &name, const QString &value);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
// Additional attributes
|
||||
@ -72,6 +78,8 @@ private:
|
||||
QByteArray mRequestData;
|
||||
QByteArray mResponseData;
|
||||
|
||||
QMap<QString, QString> header;
|
||||
|
||||
// Additional attributes
|
||||
QDateTime mStartTime;
|
||||
QDateTime mFinishTime;
|
||||
|
||||
@ -32,24 +32,37 @@ bool RequestManager::processRequest(const std::shared_ptr<Request>& request)
|
||||
QNetworkReply *reply = nullptr;
|
||||
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->requestData().isEmpty()) {
|
||||
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") {
|
||||
if ( ! request->requestData().isEmpty()) {
|
||||
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") {
|
||||
reply = mNetworkAccessManager.put(request->networkRequest(), request->requestData());
|
||||
reply = mNetworkAccessManager.put(req, request->requestData());
|
||||
} else {
|
||||
qCritical(sdknetwork) << "Using request type:" << request->type() << "is not implemented";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
foreach (auto header, reply->request().rawHeaderList()) {
|
||||
qDebug(sdknetwork) << header << ":" << reply->request().rawHeader(header);
|
||||
}
|
||||
|
||||
Q_ASSERT(reply);
|
||||
// Adding reply to final request
|
||||
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();
|
||||
|
||||
qDebug(sdknetwork) << data;
|
||||
|
||||
// Decompress gzip data
|
||||
#ifdef CORESDK_ZLIB
|
||||
if (encoding.toLower() == "gzip" && !data.isEmpty() ) {
|
||||
|
||||
@ -40,4 +40,6 @@ private:
|
||||
bool mIgnoreSsl = false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // core
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user