aboutsummaryrefslogtreecommitdiffstats
path: root/src/m_key_server_sync/KeyServerSyncModule.cpp
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-11-17 19:47:26 +0000
committersaturneric <[email protected]>2024-11-17 19:47:26 +0000
commit405522f3b09913544bbec43a802d4e13ccd84f14 (patch)
tree9ac6b34576fd7916008f673556655850873dfbce /src/m_key_server_sync/KeyServerSyncModule.cpp
parentfeat: add key server sync module (diff)
downloadModules-405522f3b09913544bbec43a802d4e13ccd84f14.tar.gz
Modules-405522f3b09913544bbec43a802d4e13ccd84f14.zip
feat: add key upload function for module key server sync
Diffstat (limited to 'src/m_key_server_sync/KeyServerSyncModule.cpp')
-rw-r--r--src/m_key_server_sync/KeyServerSyncModule.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/m_key_server_sync/KeyServerSyncModule.cpp b/src/m_key_server_sync/KeyServerSyncModule.cpp
index 2247e3d..8455993 100644
--- a/src/m_key_server_sync/KeyServerSyncModule.cpp
+++ b/src/m_key_server_sync/KeyServerSyncModule.cpp
@@ -46,6 +46,7 @@ auto GFRegisterModule() -> int {
auto GFActiveModule() -> int {
LISTEN("REQUEST_GET_PUBLIC_KEY_BY_FINGERPRINT");
LISTEN("REQUEST_GET_PUBLIC_KEY_BY_KEY_ID");
+ LISTEN("REQUEST_UPLOAD_PUBLIC_KEY");
return 0;
}
@@ -124,6 +125,45 @@ EXECUTE_MODULE() {
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();
+ vks->UploadKey(key_text);
+ 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);
+
+ return 0;
+ }
+
CB_SUCC(event);
}
END_EXECUTE_MODULE()