1 /*
2     SPDX-FileCopyrightText: 2015-2018 Krzysztof Nowicki <krissn@op.pl>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include <QObject>
10 #include <QPointer>
11 #include <QString>
12 #include <QUrl>
13 
14 #include "ewsserverversion.h"
15 
16 class EwsAbstractAuth;
17 
18 class EwsClient : public QObject
19 {
20     Q_OBJECT
21 public:
22     explicit EwsClient(QObject *parent = nullptr);
23     ~EwsClient() override;
24 
setUrl(const QString & url)25     void setUrl(const QString &url)
26     {
27         mUrl.setUrl(url);
28     }
29 
30     void setAuth(EwsAbstractAuth *auth);
31     EwsAbstractAuth *auth() const;
32 
33     enum RequestedConfiguration {
34         MailTips = 0,
35         UnifiedMessagingConfiguration,
36         ProtectionRules,
37     };
38 
39     QUrl url() const;
40 
isConfigured()41     bool isConfigured() const
42     {
43         return !mUrl.isEmpty();
44     }
45 
46     void setServerVersion(const EwsServerVersion &version);
serverVersion()47     const EwsServerVersion &serverVersion() const
48     {
49         return mServerVersion;
50     }
51 
setUserAgent(const QString & userAgent)52     void setUserAgent(const QString &userAgent)
53     {
54         mUserAgent = userAgent;
55     }
56 
userAgent()57     const QString &userAgent() const
58     {
59         return mUserAgent;
60     }
61 
setEnableNTLMv2(bool enable)62     void setEnableNTLMv2(bool enable)
63     {
64         mEnableNTLMv2 = enable;
65     }
66 
isNTLMv2Enabled()67     bool isNTLMv2Enabled() const
68     {
69         return mEnableNTLMv2;
70     }
71 
72     static QHash<QString, QString> folderHash;
73 Q_SIGNALS:
74     void oAuthTokensChanged(const QString &accessToken, const QString &refreshToken);
75     void oAuthBrowserDisplayRequest();
76 
77 private:
78     QUrl mUrl;
79 
80     QPointer<EwsAbstractAuth> mAuth;
81 
82     QString mUserAgent;
83     bool mEnableNTLMv2;
84 
85     EwsServerVersion mServerVersion;
86 
87     friend class EwsRequest;
88 };
89 
90