diff options
author | saturneric <[email protected]> | 2024-11-25 21:42:13 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-11-25 21:42:13 +0000 |
commit | 664d3cff16ceeb2d7136583d5331e9146de40643 (patch) | |
tree | e36ab18d77f5158edc3754e415a118d2e02b23cd /src | |
parent | fix: make cache variable docstring clear (diff) | |
download | Modules-664d3cff16ceeb2d7136583d5331e9146de40643.tar.gz Modules-664d3cff16ceeb2d7136583d5331e9146de40643.zip |
feat: prettify model event handling logic
Diffstat (limited to 'src')
-rw-r--r-- | src/m_key_server_sync/KeyServerSyncModule.cpp | 235 |
1 files changed, 115 insertions, 120 deletions
diff --git a/src/m_key_server_sync/KeyServerSyncModule.cpp b/src/m_key_server_sync/KeyServerSyncModule.cpp index 376bb08..ad56d2d 100644 --- a/src/m_key_server_sync/KeyServerSyncModule.cpp +++ b/src/m_key_server_sync/KeyServerSyncModule.cpp @@ -30,13 +30,13 @@ #include <QtCore> -#include "GFModuleCommonUtils.hpp" #include "GFModuleDefine.h" #include "VKSInterface.h" -GF_MODULE_API_DEFINE("com.bktus.gpgfrontend.module.key_server_sync", - "KeyServerSync", "1.0.0", - "Sync Information From Trusted Key Server.", "Saturneric") +GF_MODULE_API_DEFINE_V2("com.bktus.gpgfrontend.module.key_server_sync", + "KeyServerSync", "1.0.0", + "Sync Information From Trusted Key Server.", + "Saturneric") auto GFRegisterModule() -> int { LOG_DEBUG("key server sync module registering"); @@ -51,122 +51,117 @@ auto GFActiveModule() -> int { return 0; } -EXECUTE_MODULE() { - FLOG_DEBUG("key server sync module executing, event id: %1", - event["event_id"]); - - if (event["event_id"] == "REQUEST_GET_PUBLIC_KEY_BY_FINGERPRINT") { - if (event["fingerprint"].isEmpty()) - CB_ERR(event, -1, "fingerprint is empty"); - - QByteArray fingerprint = event["fingerprint"].toLatin1(); - FLOG_DEBUG("try to get key info of fingerprint: %1", fingerprint); - - auto* vks = new VKSInterface(); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, - QThread::currentThread(), [event](const QString& key) { - // callback - CB(event, GFGetModuleID(), - { - {"ret", QString::number(0)}, - {"key_data", key}, - }); - }); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, - &VKSInterface::deleteLater); - - QObject::connect(vks, &VKSInterface::SignalErrorOccurred, - QThread::currentThread(), - [event](const QString& error, const QString& data) { - CB(event, GFGetModuleID(), - { - {"ret", QString::number(-1)}, - {"error_msg", error}, - {"reply_data", data}, - }); - }); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, - &VKSInterface::deleteLater); - vks->GetByFingerprint(fingerprint); - - return 0; - } - - if (event["event_id"] == "REQUEST_GET_PUBLIC_KEY_BY_KEY_ID") { - if (event["key_id"].isEmpty()) CB_ERR(event, -1, "key_id is empty"); - - QByteArray key_id = event["key_id"].toLatin1(); - FLOG_DEBUG("try to get key info of key id: %1", key_id); - - auto* vks = new VKSInterface(); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, - QThread::currentThread(), [event](const QString& key) { - // callback - CB(event, GFGetModuleID(), - { - {"ret", QString::number(0)}, - {"key_data", key}, - }); - }); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, - &VKSInterface::deleteLater); - QObject::connect(vks, &VKSInterface::SignalErrorOccurred, - QThread::currentThread(), - [event](const QString& error, const QString& data) { - CB(event, GFGetModuleID(), - { - {"ret", QString::number(-1)}, - {"error_msg", error}, - {"reply_data", data}, - }); - }); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, - &VKSInterface::deleteLater); - vks->GetByKeyId(key_id); - - return 0; - } - - if (event["event_id"] == "REQUEST_UPLOAD_PUBLIC_KEY") { - if (event["key_text"].isEmpty()) CB_ERR(event, -1, "key_text is empty"); - - QByteArray key_text = event["key_text"].toLatin1(); - FLOG_DEBUG("try to get key info of key id: %1", key_text); - - auto* vks = new VKSInterface(); - QObject::connect( - vks, &VKSInterface::SignalKeyUploaded, QThread::currentThread(), - [event](const QString& fpr, const QJsonObject& status, - const QString& token) { - CB(event, GFGetModuleID(), - { - {"ret", QString::number(0)}, - {"fingerprint", fpr}, - {"status", QString::fromUtf8(QJsonDocument(status).toJson())}, - {"token", token}, - }); - }); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, - &VKSInterface::deleteLater); - QObject::connect(vks, &VKSInterface::SignalErrorOccurred, - QThread::currentThread(), - [event](const QString& error, const QString& data) { - CB(event, GFGetModuleID(), - { - {"ret", QString::number(-1)}, - {"error_msg", error}, - {"reply_data", data}, - }); - }); - QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, - &VKSInterface::deleteLater); - vks->UploadKey(key_text); - return 0; - } - - CB_ERR(event, -1, "the type of this event is not supported"); -} -END_EXECUTE_MODULE() +REGISTER_EVENT_HANDLER( + REQUEST_GET_PUBLIC_KEY_BY_FINGERPRINT, [](const MEvent& event) -> int { + if (event["fingerprint"].isEmpty()) + CB_ERR(event, -1, "fingerprint is empty"); + + QByteArray fingerprint = event["fingerprint"].toLatin1(); + FLOG_DEBUG("try to get key info of fingerprint: %1", fingerprint); + + auto* vks = new VKSInterface(); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, + QThread::currentThread(), [event](const QString& key) { + // callback + CB(event, GFGetModuleID(), + { + {"ret", QString::number(0)}, + {"key_data", key}, + }); + }); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, + &VKSInterface::deleteLater); + + QObject::connect(vks, &VKSInterface::SignalErrorOccurred, + QThread::currentThread(), + [event](const QString& error, const QString& data) { + CB(event, GFGetModuleID(), + { + {"ret", QString::number(-1)}, + {"error_msg", error}, + {"reply_data", data}, + }); + }); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, + &VKSInterface::deleteLater); + vks->GetByFingerprint(fingerprint); + return 0; + }); + +REGISTER_EVENT_HANDLER( + REQUEST_GET_PUBLIC_KEY_BY_KEY_ID, [](const MEvent& event) -> int { + if (event["key_id"].isEmpty()) CB_ERR(event, -1, "key_id is empty"); + + QByteArray key_id = event["key_id"].toLatin1(); + FLOG_DEBUG("try to get key info of key id: %1", key_id); + + auto* vks = new VKSInterface(); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, + QThread::currentThread(), [event](const QString& key) { + // callback + CB(event, GFGetModuleID(), + { + {"ret", QString::number(0)}, + {"key_data", key}, + }); + }); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, + &VKSInterface::deleteLater); + QObject::connect(vks, &VKSInterface::SignalErrorOccurred, + QThread::currentThread(), + [event](const QString& error, const QString& data) { + CB(event, GFGetModuleID(), + { + {"ret", QString::number(-1)}, + {"error_msg", error}, + {"reply_data", data}, + }); + }); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, + &VKSInterface::deleteLater); + vks->GetByKeyId(key_id); + + return 0; + }); + +REGISTER_EVENT_HANDLER( + REQUEST_UPLOAD_PUBLIC_KEY, [](const MEvent& event) -> int { + if (event["key_text"].isEmpty()) CB_ERR(event, -1, "key_text is empty"); + + QByteArray key_text = event["key_text"].toLatin1(); + FLOG_DEBUG("try to get key info of key id: %1", key_text); + + auto* vks = new VKSInterface(); + QObject::connect( + vks, &VKSInterface::SignalKeyUploaded, QThread::currentThread(), + [event](const QString& fpr, const QJsonObject& status, + const QString& token) { + CB(event, GFGetModuleID(), + { + {"ret", QString::number(0)}, + {"fingerprint", fpr}, + {"status", + QString::fromUtf8(QJsonDocument(status).toJson())}, + {"token", token}, + }); + }); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, + &VKSInterface::deleteLater); + QObject::connect(vks, &VKSInterface::SignalErrorOccurred, + QThread::currentThread(), + [event](const QString& error, const QString& data) { + CB(event, GFGetModuleID(), + { + {"ret", QString::number(-1)}, + {"error_msg", error}, + {"reply_data", data}, + }); + }); + QObject::connect(vks, &VKSInterface::SignalKeyRetrieved, vks, + &VKSInterface::deleteLater); + vks->UploadKey(key_text); + return 0; + }); auto GFDeactivateModule() -> int { return 0; } |