summaryrefslogtreecommitdiffstats
path: root/examples/imapresource/imapserverproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/imapresource/imapserverproxy.cpp')
-rw-r--r--examples/imapresource/imapserverproxy.cpp35
1 files changed, 19 insertions, 16 deletions
diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp
index 538105c..5c2e07c 100644
--- a/examples/imapresource/imapserverproxy.cpp
+++ b/examples/imapresource/imapserverproxy.cpp
@@ -61,6 +61,21 @@ const char* Imap::Capabilities::Namespace = "NAMESPACE";
61const char* Imap::Capabilities::Uidplus = "UIDPLUS"; 61const char* Imap::Capabilities::Uidplus = "UIDPLUS";
62const char* Imap::Capabilities::Condstore = "CONDSTORE"; 62const char* Imap::Capabilities::Condstore = "CONDSTORE";
63 63
64static int translateImapError(int error)
65{
66 switch (error) {
67 case KJob::UserDefinedError:
68 return Imap::ConnectionLost;
69 case KIMAP2::LoginJob::ErrorCode::ERR_HOST_NOT_FOUND:
70 return Imap::HostNotFoundError;
71 case KIMAP2::LoginJob::ErrorCode::ERR_COULD_NOT_CONNECT:
72 return Imap::CouldNotConnectError;
73 case KIMAP2::LoginJob::ErrorCode::ERR_SSL_HANDSHAKE_FAILED:
74 return Imap::SslHandshakeError;
75 }
76 return Imap::UnknownError;
77}
78
64template <typename T> 79template <typename T>
65static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f) 80static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f)
66{ 81{
@@ -69,7 +84,8 @@ static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f)
69 SinkTrace() << "Job done: " << job->metaObject()->className(); 84 SinkTrace() << "Job done: " << job->metaObject()->className();
70 if (job->error()) { 85 if (job->error()) {
71 SinkWarning() << "Job failed: " << job->errorString() << job->metaObject()->className(); 86 SinkWarning() << "Job failed: " << job->errorString() << job->metaObject()->className();
72 future.setError(job->error(), job->errorString()); 87 auto proxyError = translateImapError(job->error());
88 future.setError(proxyError, job->errorString());
73 } else { 89 } else {
74 future.setValue(f(job)); 90 future.setValue(f(job));
75 future.setFinished(); 91 future.setFinished();
@@ -87,7 +103,8 @@ static KAsync::Job<void> runJob(KJob *job)
87 SinkTrace() << "Job done: " << job->metaObject()->className(); 103 SinkTrace() << "Job done: " << job->metaObject()->className();
88 if (job->error()) { 104 if (job->error()) {
89 SinkWarning() << "Job failed: " << job->errorString() << job->metaObject()->className(); 105 SinkWarning() << "Job failed: " << job->errorString() << job->metaObject()->className();
90 future.setError(job->error(), job->errorString()); 106 auto proxyError = translateImapError(job->error());
107 future.setError(proxyError, job->errorString());
91 } else { 108 } else {
92 future.setFinished(); 109 future.setFinished();
93 } 110 }
@@ -166,20 +183,6 @@ KAsync::Job<void> ImapServerProxy::login(const QString &username, const QString
166 // SinkTrace() << "Found personal namespaces: " << mNamespaces.personal; 183 // SinkTrace() << "Found personal namespaces: " << mNamespaces.personal;
167 // SinkTrace() << "Found shared namespaces: " << mNamespaces.shared; 184 // SinkTrace() << "Found shared namespaces: " << mNamespaces.shared;
168 // SinkTrace() << "Found user namespaces: " << mNamespaces.user; 185 // SinkTrace() << "Found user namespaces: " << mNamespaces.user;
169 }).then([=] (const KAsync::Error &error) {
170 if (error) {
171 switch (error.errorCode) {
172 case KIMAP2::LoginJob::ErrorCode::ERR_HOST_NOT_FOUND:
173 return KAsync::error(HostNotFoundError, "Host not found: " + error.errorMessage);
174 case KIMAP2::LoginJob::ErrorCode::ERR_COULD_NOT_CONNECT:
175 return KAsync::error(CouldNotConnectError, "Failed to connect: " + error.errorMessage);
176 case KIMAP2::LoginJob::ErrorCode::ERR_SSL_HANDSHAKE_FAILED:
177 return KAsync::error(SslHandshakeError, "Ssl handshake failed: " + error.errorMessage);
178 default:
179 return KAsync::error(error);
180 }
181 }
182 return KAsync::null();
183 }); 186 });
184} 187}
185 188