1/*
2 SPDX-FileCopyrightText: 2014 Gregory Oestreicher <greg@kamago.net>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#ifndef KDAV_DAVJOBBASE_H
8#define KDAV_DAVJOBBASE_H
9
10#include "kdav_export.h"
11
12#include <KJob>
13
14#include <memory>
15
16namespace KDAV
17{
18class DavJobBasePrivate;
19class Error;
20
21/*!
22 * \class KDAV::DavJobBase
23 * \inheaderfile KDAV/DavJobBase
24 * \inmodule KDAV
25 *
26 * \brief base class for the jobs used by the resource.
27 */
28class KDAV_EXPORT DavJobBase : public KJob
29{
30 Q_OBJECT
31
32public:
33 explicit DavJobBase(QObject *parent = nullptr);
34 ~DavJobBase() override;
35
36 /*!
37 * Get the latest response code.
38 *
39 * If no response code has been set then 0 will be returned, but will
40 * be meaningless unless error() is non-zero. In that case this means
41 * that the latest error was not at the HTTP level.
42 */
43 Q_REQUIRED_RESULT int latestResponseCode() const;
44
45 /*!
46 * Check if the job can be retried later.
47 *
48 * This will return true for transient errors, i.e. if the response code
49 * is either zero and error() is set or if the HTTP response code hints
50 * at a temporary error.
51 *
52 * The HTTP response codes considered retryable are:
53 * \list
54 * \li 401
55 * \li 402
56 * \li 407
57 * \li 408
58 * \li 423
59 * \li 429
60 * \li 501 to 504, inclusive
61 * \li 507
62 * \li 511
63 * \endlist
64 */
65 Q_REQUIRED_RESULT bool canRetryLater() const;
66
67 /*!
68 * Check if the job failed because of a conflict
69 */
70 Q_REQUIRED_RESULT bool hasConflict() const;
71
72 /*!
73 * Returns a instance of the KDAV:Error to be able to translate the error
74 */
75 Q_REQUIRED_RESULT Error davError() const;
76
77protected:
78 Q_DECL_HIDDEN explicit DavJobBase(DavJobBasePrivate *dd, QObject *parent = nullptr);
79 std::unique_ptr<DavJobBasePrivate> d_ptr;
80
81private:
82 Q_DECLARE_PRIVATE(DavJobBase)
83};
84}
85
86#endif
87

source code of kdav/src/common/davjobbase.h