Messagelib

dkimmanager.cpp
1 /*
2  SPDX-FileCopyrightText: 2019-2023 Laurent Montel <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "dkimmanager.h"
8 #include "dkimcheckfulljob.h"
9 #include "dkimmanagerkey.h"
10 #include "dkimresultattribute.h"
11 #include "messageviewer_dkimcheckerdebug.h"
12 #include <Akonadi/AttributeFactory>
13 
14 using namespace MessageViewer;
15 DKIMManager::DKIMManager(QObject *parent)
16  : QObject(parent)
17 {
18  // Initialize QCA
19  MessageViewer::DKIMManagerKey::self();
20  Akonadi::AttributeFactory::registerAttribute<MessageViewer::DKIMResultAttribute>();
21 }
22 
23 DKIMManager::~DKIMManager() = default;
24 
25 DKIMManager *DKIMManager::self()
26 {
27  static DKIMManager s_self;
28  return &s_self;
29 }
30 
31 void DKIMManager::clearInfoWidget()
32 {
33  Q_EMIT clearInfo();
34 }
35 
36 DKIMCheckPolicy DKIMManager::policy() const
37 {
38  return mCheckPolicy;
39 }
40 
41 void DKIMManager::setPolicy(const DKIMCheckPolicy &policy)
42 {
43  mCheckPolicy = policy;
44 }
45 
46 void DKIMManager::recheckDKim(const Akonadi::Item &item)
47 {
48  checkFullInfo(item);
49 }
50 
51 void DKIMManager::checkDKim(const Akonadi::Item &item)
52 {
53  if (mCheckPolicy.saveDkimResult()) {
54  if (item.hasAttribute<MessageViewer::DKIMResultAttribute>()) {
55  const auto *const attr = item.attribute<MessageViewer::DKIMResultAttribute>();
56  if (attr) {
57  DKIMCheckSignatureJob::CheckSignatureResult checkResult;
58  checkResult.error = static_cast<DKIMCheckSignatureJob::DKIMError>(attr->error());
59  checkResult.warning = static_cast<DKIMCheckSignatureJob::DKIMWarning>(attr->warning());
60  checkResult.status = static_cast<DKIMCheckSignatureJob::DKIMStatus>(attr->status());
61  qCDebug(MESSAGEVIEWER_DKIMCHECKER_LOG)
62  << "result : status " << checkResult.status << " error : " << checkResult.error << " warning " << checkResult.warning;
63  Q_EMIT result(checkResult, item.id());
64  return;
65  }
66  }
67  }
68  checkFullInfo(item);
69 }
70 
71 void DKIMManager::checkFullInfo(const Akonadi::Item &item)
72 {
73  auto job = new DKIMCheckFullJob(this);
74  job->setPolicy(mCheckPolicy);
75  connect(job, &DKIMCheckFullJob::result, this, &DKIMManager::result);
76  job->startCheckFullInfo(item);
77 }
78 
79 void DKIMManager::checkDKim(const KMime::Message::Ptr &message)
80 {
81  auto job = new DKIMCheckFullJob(this);
82  job->setPolicy(mCheckPolicy);
83  connect(job, &DKIMCheckFullJob::result, this, &DKIMManager::result);
84  job->startCheckFullInfo(message);
85 }
86 
87 #include "moc_dkimmanager.cpp"
Q_EMITQ_EMIT
The DKIMCheckPolicy class.
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
The DKIMManager class.
Definition: dkimmanager.h:21
bool hasAttribute() const
Id id() const
const T * attribute() const
QString message
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Wed Dec 6 2023 03:56:40 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.