|
@@ -4,6 +4,7 @@
|
|
|
#include <QJsonObject>
|
|
#include <QJsonObject>
|
|
|
#include <QJsonDocument>
|
|
#include <QJsonDocument>
|
|
|
#include <QDir>
|
|
#include <QDir>
|
|
|
|
|
+#include "appcontext.h"
|
|
|
|
|
|
|
|
HttpServer::HttpServer(QObject *parent)
|
|
HttpServer::HttpServer(QObject *parent)
|
|
|
: QObject{parent}
|
|
: QObject{parent}
|
|
@@ -60,7 +61,98 @@ void HttpServer::run_hhttp_sever()
|
|
|
doc.setObject(obj);
|
|
doc.setObject(obj);
|
|
|
|
|
|
|
|
res.status = httplib::StatusCode::OK_200;
|
|
res.status = httplib::StatusCode::OK_200;
|
|
|
- res.set_content(doc.toJson().data(), "application/json");
|
|
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 插件库信息
|
|
|
|
|
+ m_server.Get("/plugininfo", [&](const httplib::Request &req, httplib::Response &res) {
|
|
|
|
|
+ PluginManager &pluginMgr = AppContext::instance().pluginManager();
|
|
|
|
|
+ QJsonObject info = pluginMgr.pluginInfo();
|
|
|
|
|
+ QJsonDocument doc;
|
|
|
|
|
+ doc.setObject(info);
|
|
|
|
|
+ res.status = httplib::StatusCode::OK_200;
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ m_server.Post("/plugininfo/delete", [&](const httplib::Request &req, httplib::Response &res) {
|
|
|
|
|
+ if(req.body.empty()) {
|
|
|
|
|
+ res.status = httplib::StatusCode::BadRequest_400;
|
|
|
|
|
+ res.set_content(R"({"message": "Request error"})", "application/json");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ PluginManager &pluginMgr = AppContext::instance().pluginManager();
|
|
|
|
|
+ QString jsonStr = QString::fromStdString(req.body);
|
|
|
|
|
+ QJsonParseError error;
|
|
|
|
|
+ QString pluginName;
|
|
|
|
|
+ QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8(), &error);
|
|
|
|
|
+ if(error.error == QJsonParseError::NoError && doc.isObject()) {
|
|
|
|
|
+ QJsonObject obj = doc.object();
|
|
|
|
|
+ if(obj.contains("name")) {
|
|
|
|
|
+ pluginName = obj["name"].toString();
|
|
|
|
|
+
|
|
|
|
|
+ if(pluginMgr.delPlugin(pluginName)) {
|
|
|
|
|
+ QJsonObject reply = {
|
|
|
|
|
+ {"message", QString("Plugin delete successfully")}
|
|
|
|
|
+ };
|
|
|
|
|
+ doc.setObject(reply);
|
|
|
|
|
+ res.status = httplib::StatusCode::OK_200;
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
|
|
+ return;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ QJsonObject reply = {
|
|
|
|
|
+ {"message", QString("Plugin delete failed")}
|
|
|
|
|
+ };
|
|
|
|
|
+ doc.setObject(reply);
|
|
|
|
|
+ res.status = httplib::StatusCode::InternalServerError_500;
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ res.status = httplib::StatusCode::BadRequest_400;
|
|
|
|
|
+ res.set_content(R"({"message": "Invalid json"})", "application/json");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ m_server.Post("/plugininfo/update", [&](const httplib::Request &req, httplib::Response &res) {
|
|
|
|
|
+ if(req.body.empty()) {
|
|
|
|
|
+ res.status = httplib::StatusCode::BadRequest_400;
|
|
|
|
|
+ res.set_content(R"({"message": "Request error"})", "application/json");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ PluginManager &pluginMgr = AppContext::instance().pluginManager();
|
|
|
|
|
+ QString jsonStr = QString::fromStdString(req.body);
|
|
|
|
|
+ QJsonParseError error;
|
|
|
|
|
+ QString pluginName;
|
|
|
|
|
+ QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8(), &error);
|
|
|
|
|
+ if(error.error == QJsonParseError::NoError && doc.isObject()) {
|
|
|
|
|
+ QJsonObject obj = doc.object();
|
|
|
|
|
+ if(obj.contains("name") && obj.contains("enabled")) {
|
|
|
|
|
+ pluginName = obj["name"].toString();
|
|
|
|
|
+
|
|
|
|
|
+ if(pluginMgr.updatePluginInfo(pluginName, obj["enabled"].toBool())) {
|
|
|
|
|
+ emit reloadCanvas();
|
|
|
|
|
+ QJsonObject reply = {
|
|
|
|
|
+ {"message", QString("Plugin update successfully")}
|
|
|
|
|
+ };
|
|
|
|
|
+ doc.setObject(reply);
|
|
|
|
|
+ res.status = httplib::StatusCode::OK_200;
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
|
|
+ return;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ QJsonObject reply = {
|
|
|
|
|
+ {"message", QString("Plugin update failed")}
|
|
|
|
|
+ };
|
|
|
|
|
+ doc.setObject(reply);
|
|
|
|
|
+ res.status = httplib::StatusCode::InternalServerError_500;
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ res.status = httplib::StatusCode::BadRequest_400;
|
|
|
|
|
+ res.set_content(R"({"message": "Invalid json"})", "application/json");
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
// 画面配置文件更新接口
|
|
// 画面配置文件更新接口
|
|
@@ -92,7 +184,7 @@ void HttpServer::run_hhttp_sever()
|
|
|
doc.setObject(obj);
|
|
doc.setObject(obj);
|
|
|
|
|
|
|
|
res.status = httplib::StatusCode::BadRequest_400;
|
|
res.status = httplib::StatusCode::BadRequest_400;
|
|
|
- res.set_content(doc.toJson().data(), "application/json");
|
|
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
} else {
|
|
} else {
|
|
|
// File
|
|
// File
|
|
|
QString currentPath = QDir::currentPath();
|
|
QString currentPath = QDir::currentPath();
|
|
@@ -121,7 +213,7 @@ void HttpServer::run_hhttp_sever()
|
|
|
doc.setObject(obj);
|
|
doc.setObject(obj);
|
|
|
|
|
|
|
|
res.status = httplib::StatusCode::OK_200;
|
|
res.status = httplib::StatusCode::OK_200;
|
|
|
- res.set_content(doc.toJson().data(), "application/json");
|
|
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
@@ -137,7 +229,7 @@ void HttpServer::run_hhttp_sever()
|
|
|
doc.setObject(obj);
|
|
doc.setObject(obj);
|
|
|
|
|
|
|
|
res.status = httplib::StatusCode::BadRequest_400;
|
|
res.status = httplib::StatusCode::BadRequest_400;
|
|
|
- res.set_content(doc.toJson().data(), "application/json");
|
|
|
|
|
|
|
+ res.set_content(doc.toJson(QJsonDocument::Compact).data(), "application/json");
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|