1 /*
2 SPDX-FileCopyrightText: 2010, 2012 Rolf Eike Beer <kde@opensource.sf-tec.de>
3 SPDX-License-Identifier: GPL-2.0-or-later
4 */
5
6 #include "kgpgkeyserversearchtransaction.h"
7
KGpgKeyserverSearchTransaction(QObject * parent,const QString & keyserver,const QString & pattern,const bool withProgress,const QString & proxy)8 KGpgKeyserverSearchTransaction::KGpgKeyserverSearchTransaction(QObject *parent, const QString &keyserver, const QString &pattern, const bool withProgress, const QString &proxy)
9 : KGpgKeyserverTransaction(parent, keyserver, withProgress, proxy),
10 m_pageEmpty(true)
11 {
12 addArgument(QLatin1String( "--with-colons" ));
13 addArgument(QLatin1String( "--search-keys" ));
14 m_patternPos = addArgument(pattern);
15 }
16
~KGpgKeyserverSearchTransaction()17 KGpgKeyserverSearchTransaction::~KGpgKeyserverSearchTransaction()
18 {
19 }
20
21 bool
preStart()22 KGpgKeyserverSearchTransaction::preStart()
23 {
24 setSuccess(TS_MSG_SEQUENCE);
25 m_keyLines.clear();
26
27 return KGpgKeyserverTransaction::preStart();
28 }
29
30 bool
nextLine(const QString & line)31 KGpgKeyserverSearchTransaction::nextLine(const QString &line)
32 {
33 if (line.startsWith(QLatin1String("[GNUPG:] GET_LINE keysearch.prompt"))) {
34 if (!m_pageEmpty) {
35 write("n");
36 m_pageEmpty = true;
37 } else {
38 return true;
39 }
40 } else if (!line.isEmpty() && !line.startsWith(QLatin1String("[GNUPG:] "))) {
41 m_pageEmpty = false;
42 if (line.startsWith(QLatin1String("pub:"))) {
43 if (!m_keyLines.isEmpty()) {
44 Q_EMIT newKey(m_keyLines);
45 m_keyLines.clear();
46 }
47 m_keyLines.append(line);
48 } else if (!m_keyLines.isEmpty() && (line != QLatin1String("\r")))
49 m_keyLines.append(line);
50 }
51
52 return false;
53 }
54
55 void
finish()56 KGpgKeyserverSearchTransaction::finish()
57 {
58 if (!m_keyLines.isEmpty()) {
59 Q_EMIT newKey(m_keyLines);
60 m_keyLines.clear();
61 }
62 }
63
64 void
setPattern(const QString & pattern)65 KGpgKeyserverSearchTransaction::setPattern(const QString &pattern)
66 {
67 replaceArgument(m_patternPos, pattern);
68 }
69