diff options
author | saturneric <[email protected]> | 2024-11-20 15:30:01 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-11-20 15:30:08 +0000 |
commit | e76d2abcf93a2299382983cb3b0b515eb75a1447 (patch) | |
tree | 74df7e434ea50fe98b3c2f3f5cc5ae2f92a0df63 /src/m_key_server_sync/VKSInterface.cpp | |
parent | feat: add key upload function for module key server sync (diff) | |
download | Modules-e76d2abcf93a2299382983cb3b0b515eb75a1447.tar.gz Modules-e76d2abcf93a2299382983cb3b0b515eb75a1447.zip |
feat: cache key server data for 5 min
Diffstat (limited to 'src/m_key_server_sync/VKSInterface.cpp')
-rw-r--r-- | src/m_key_server_sync/VKSInterface.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/m_key_server_sync/VKSInterface.cpp b/src/m_key_server_sync/VKSInterface.cpp index 9b4f4fd..eb16097 100644 --- a/src/m_key_server_sync/VKSInterface.cpp +++ b/src/m_key_server_sync/VKSInterface.cpp @@ -41,6 +41,9 @@ #include <QUrlQuery> #include <utility> +// +#include <GFModuleCommonUtils.hpp> + VKSInterface::VKSInterface(QString key_server, QObject* parent) : QObject(parent), target_key_server_(std::move(key_server)), @@ -50,6 +53,15 @@ VKSInterface::VKSInterface(QString key_server, QObject* parent) } void VKSInterface::GetByFingerprint(const QString& fingerprint) { + // search cache by first + cache_key_ = + QString("module:key-server-sync:key-data:fpr:%1").arg(fingerprint); + auto value = UDUP(GFCacheGet(QDUP(cache_key_))); + if (!value.isEmpty()) { + emit SignalKeyRetrieved(value); + return; + } + QUrl url(QString("%1/vks/v1/by-fingerprint/%2") .arg(target_key_server_) .arg(fingerprint)); @@ -57,8 +69,17 @@ void VKSInterface::GetByFingerprint(const QString& fingerprint) { network_manager_->get(request); } -void VKSInterface::GetByKeyId(const QString& keyId) { - QUrl url(QString("%1/vks/v1/by-keyid/%2").arg(target_key_server_).arg(keyId)); +void VKSInterface::GetByKeyId(const QString& key_id) { + // search cache by first + cache_key_ = QString("module:key-server-sync:key-data:id:%1").arg(key_id); + auto value = UDUP(GFCacheGet(QDUP(cache_key_))); + if (!value.isEmpty()) { + emit SignalKeyRetrieved(value); + return; + } + + QUrl url( + QString("%1/vks/v1/by-keyid/%2").arg(target_key_server_).arg(key_id)); QNetworkRequest request(url); network_manager_->get(request); } @@ -122,6 +143,7 @@ void VKSInterface::on_reply_finished(QNetworkReply* reply) { if (url.path().contains("/vks/v1/by-fingerprint") || url.path().contains("/vks/v1/by-keyid") || url.path().contains("/vks/v1/by-email")) { + GFCacheSaveWithTTL(QDUP(cache_key_), QDUP(QString(response_data)), 300); emit SignalKeyRetrieved(QString(response_data)); } else if (url.path().contains("/vks/v1/upload")) { if (json_response.isObject()) { |