summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-02-08 14:24:43 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-02-08 14:24:43 +0100
commit792e3a05c4506302d1ff00ef7b012440f3510c17 (patch)
tree228f2ec4d08aa4442461840e1e376affe6a6c0d6 /examples
parent0277baf81448b0ec0fbbd92b21c321f91ba994d0 (diff)
downloadsink-792e3a05c4506302d1ff00ef7b012440f3510c17.tar.gz
sink-792e3a05c4506302d1ff00ef7b012440f3510c17.zip
Don't hardcode capabilities
Diffstat (limited to 'examples')
-rw-r--r--examples/imapresource/imapserverproxy.cpp8
-rw-r--r--examples/imapresource/imapserverproxy.h7
2 files changed, 13 insertions, 2 deletions
diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp
index e329911..d3de6ba 100644
--- a/examples/imapresource/imapserverproxy.cpp
+++ b/examples/imapresource/imapserverproxy.cpp
@@ -62,6 +62,10 @@ const char* Imap::FolderFlags::Archive = "\\Archive";
62const char* Imap::FolderFlags::Junk = "\\Junk"; 62const char* Imap::FolderFlags::Junk = "\\Junk";
63const char* Imap::FolderFlags::Flagged = "\\Flagged"; 63const char* Imap::FolderFlags::Flagged = "\\Flagged";
64 64
65const char* Imap::Capabilities::Namespace = "NAMESPACE";
66const char* Imap::Capabilities::Uidplus = "UIDPLUS";
67const char* Imap::Capabilities::Condstore = "CONDSTORE";
68
65template <typename T> 69template <typename T>
66static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f) 70static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f)
67{ 71{
@@ -145,7 +149,7 @@ KAsync::Job<void> ImapServerProxy::login(const QString &username, const QString
145 149
146 return runJob(loginJob).then(runJob(capabilitiesJob)).then([this](){ 150 return runJob(loginJob).then(runJob(capabilitiesJob)).then([this](){
147 SinkTrace() << "Supported capabilities: " << mCapabilities; 151 SinkTrace() << "Supported capabilities: " << mCapabilities;
148 QStringList requiredExtensions = QStringList() << "UIDPLUS" << "NAMESPACE"; 152 QStringList requiredExtensions = QStringList() << Capabilities::Uidplus << Capabilities::Namespace;
149 for (const auto &requiredExtension : requiredExtensions) { 153 for (const auto &requiredExtension : requiredExtensions) {
150 if (!mCapabilities.contains(requiredExtension)) { 154 if (!mCapabilities.contains(requiredExtension)) {
151 SinkWarning() << "Server doesn't support required capability: " << requiredExtension; 155 SinkWarning() << "Server doesn't support required capability: " << requiredExtension;
@@ -182,7 +186,7 @@ KAsync::Job<SelectResult> ImapServerProxy::select(const QString &mailbox)
182{ 186{
183 auto select = new KIMAP2::SelectJob(mSession); 187 auto select = new KIMAP2::SelectJob(mSession);
184 select->setMailBox(mailbox); 188 select->setMailBox(mailbox);
185 select->setCondstoreEnabled(mCapabilities.contains("CONDSTORE")); 189 select->setCondstoreEnabled(mCapabilities.contains(Capabilities::Condstore));
186 return runJob<SelectResult>(select, [select](KJob* job) -> SelectResult { 190 return runJob<SelectResult>(select, [select](KJob* job) -> SelectResult {
187 return {select->uidValidity(), select->nextUid(), select->highestModSequence()}; 191 return {select->uidValidity(), select->nextUid(), select->highestModSequence()};
188 }).onError([=] (const KAsync::Error &error) { 192 }).onError([=] (const KAsync::Error &error) {
diff --git a/examples/imapresource/imapserverproxy.h b/examples/imapresource/imapserverproxy.h
index 081750f..84343eb 100644
--- a/examples/imapresource/imapserverproxy.h
+++ b/examples/imapresource/imapserverproxy.h
@@ -56,6 +56,13 @@ namespace FolderFlags
56 extern const char* All; 56 extern const char* All;
57} 57}
58 58
59namespace Capabilities
60{
61 extern const char* Condstore;
62 extern const char* Uidplus;
63 extern const char* Namespace;
64}
65
59struct Message { 66struct Message {
60 qint64 uid; 67 qint64 uid;
61 qint64 size; 68 qint64 size;