1 /*
2     SPDX-FileCopyrightText: 2016 Sandro Knauß <sknauss@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #ifndef KDAV_DAVERROR_H
8 #define KDAV_DAVERROR_H
9 
10 #include "kdav_export.h"
11 
12 #include <KJob>
13 
14 #include <QSharedDataPointer>
15 #include <QString>
16 
17 namespace KDAV
18 {
19 /** DAV operation error codes. */
20 enum ErrorNumber {
21     NO_ERR = 0,
22     ERR_PROBLEM_WITH_REQUEST = KJob::UserDefinedError + 200, // it would be better to request KIO about uts UserDefinedError space.
23     ERR_NO_MULTIGET,
24     ERR_SERVER_UNRECOVERABLE,
25     ERR_COLLECTIONDELETE = ERR_PROBLEM_WITH_REQUEST + 10,
26     ERR_COLLECTIONFETCH = ERR_PROBLEM_WITH_REQUEST + 20,
27     ERR_COLLECTIONFETCH_XQUERY_SETFOCUS,
28     ERR_COLLECTIONFETCH_XQUERY_INVALID,
29     ERR_COLLECTIONMODIFY = ERR_PROBLEM_WITH_REQUEST + 30,
30     ERR_COLLECTIONMODIFY_NO_PROPERITES,
31     ERR_COLLECTIONMODIFY_RESPONSE,
32     ERR_ITEMCREATE = ERR_PROBLEM_WITH_REQUEST + 100,
33     ERR_ITEMDELETE = ERR_PROBLEM_WITH_REQUEST + 110,
34     ERR_ITEMMODIFY = ERR_PROBLEM_WITH_REQUEST + 120,
35     ERR_ITEMLIST = ERR_PROBLEM_WITH_REQUEST + 130,
36     ERR_ITEMLIST_NOMIMETYPE,
37 };
38 
39 class ErrorPrivate;
40 
41 /**
42  * @class Error daverror.h <KDAV/DavError>
43  *
44  * DAV operation error.
45  */
46 class KDAV_EXPORT Error
47 {
48 public:
49     explicit Error();
50     explicit Error(ErrorNumber errNo, int responseCode, const QString &errorText, int jobErrorCode);
51     Error(const Error &);
52     Error(Error &&);
53     ~Error();
54     Error &operator=(const Error &);
55     Error &operator=(Error &&);
56 
57     Q_REQUIRED_RESULT ErrorNumber errorNumber() const;
58     Q_REQUIRED_RESULT int responseCode() const;
59     Q_REQUIRED_RESULT QString internalErrorText() const;
60     Q_REQUIRED_RESULT int jobErrorCode() const;
61     Q_REQUIRED_RESULT QString translatedJobError() const;
62     Q_REQUIRED_RESULT QString errorText() const;
63 
64 private:
65     QSharedDataPointer<ErrorPrivate> d;
66 };
67 }
68 
69 #endif
70