diff options
| author | Ingo Klöcker <[email protected]> | 2022-05-04 14:51:50 +0200 |
|---|---|---|
| committer | Ingo Klöcker <[email protected]> | 2022-05-04 14:51:50 +0200 |
| commit | c64a8daf507a2216611861a12f312466b0bae8b2 (patch) | |
| tree | 11e1a969269fef29992c40e6f73af60bd00de41a /lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp | |
| parent | cpp: Allow retrieving import result of key listing with locate mode (diff) | |
| download | gpgme-c64a8daf507a2216611861a12f312466b0bae8b2.tar.gz gpgme-c64a8daf507a2216611861a12f312466b0bae8b2.zip | |
qt: Emit import result when refreshing OpenPGP keys
* lang/qt/src/refreshopenpgpkeysjob.h: New.
* lang/qt/src/Makefile.am, lang/qt/src/job.cpp: Update accordingly.
* lang/qt/src/qgpgmerefreshopenpgpkeysjob.h (class
QGpgMERefreshOpenPGPKeysJob): Derive from RefreshOpenPGPKeysJob with
result ImportResult. Remove unused start overload.
* lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp (locate_external_keys):
Ignore result of KeyListJob. Return import result.
(receive_keys): Return import result.
(refresh_keys): Merge the two import results and return the result.
* lang/qt/src/protocol.h (class Protocol): Add pure virtual member
function refreshOpenPGPKeysJob.
* lang/qt/src/protocol_p.h (Protocol::refreshKeysJob): Return nullptr
for OpenPGP protocol.
(Protocol::refreshOpenPGPKeysJob): New.
* lang/qt/tests/run-refreshkeysjob.cpp (main): Use appropriate job
for the protocol of the key to refresh.
--
This adds RefreshOpenPGPKeysJob complementing RefreshKeysJob (for S/MIME
keys). Changing the result type of RefreshKeysJob would break the ABI.
Therefore we have to introduce a new base class for the refresh job for
OpenPGP. We derive this base class from AbstractImportJob because we
want to return an import result.
GnuPG-bug-id: 5951
Diffstat (limited to 'lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp')
| -rw-r--r-- | lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp b/lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp index 425b9bf7..36ea9a1b 100644 --- a/lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp +++ b/lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp @@ -80,7 +80,7 @@ QGpgMERefreshOpenPGPKeysJob::QGpgMERefreshOpenPGPKeysJob(Context *context) QGpgMERefreshOpenPGPKeysJob::~QGpgMERefreshOpenPGPKeysJob() = default; -static Error locate_external_keys(Context *ctx, const std::vector<Key> &keys) +static ImportResult locate_external_keys(Context *ctx, const std::vector<Key> &keys) { Context::KeyListModeSaver saver{ctx}; ctx->setKeyListMode(GpgME::LocateExternal); @@ -88,13 +88,14 @@ static Error locate_external_keys(Context *ctx, const std::vector<Key> &keys) const auto emails = toEmailAddresses(keys); std::vector<Key> dummy; auto job = std::unique_ptr<KeyListJob>{new QGpgMEKeyListJob{ctx}}; - const auto result = job->exec(emails, false, dummy); + (void) job->exec(emails, false, dummy); + const auto result = ctx->importResult(); job.release(); - return result.error(); + return result; } -static Error receive_keys(Context *ctx, const std::vector<Key> &keys) +static ImportResult receive_keys(Context *ctx, const std::vector<Key> &keys) { const auto fprs = toFingerprints(keys); @@ -102,25 +103,22 @@ static Error receive_keys(Context *ctx, const std::vector<Key> &keys) const auto result = job->exec(fprs); job.release(); - return result.error(); + return result; } static QGpgMERefreshOpenPGPKeysJob::result_type refresh_keys(Context *ctx, const std::vector<Key> &keys) { - Error err; + ImportResult result; - err = locate_external_keys(ctx, keys); - if (!err) { - err = receive_keys(ctx, keys); + result = locate_external_keys(ctx, keys); + if (!result.error()) { + const auto res2 = receive_keys(ctx, keys); + if (!res2.error()) { + result.mergeWith(res2); + } } - return std::make_tuple(err, /*err ? WKDLookupResult{pattern, err} : result,*/ QString{}, Error{}); -} - -GpgME::Error QGpgMERefreshOpenPGPKeysJob::start(const QStringList &patterns) -{ - Q_UNUSED(patterns); - return GpgME::Error::fromCode(GPG_ERR_NOT_IMPLEMENTED); + return std::make_tuple(result, QString{}, Error{}); } GpgME::Error QGpgMERefreshOpenPGPKeysJob::start(const std::vector<GpgME::Key> &keys) |
