1 /*
2    SPDX-FileCopyrightText: 2020-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "librocketchatrestapi-qt5_export.h"
10 #include "restapiabstractjob.h"
11 #include <QDateTime>
12 #include <QDebug>
13 namespace RocketChatRestApi
14 {
15 class LIBROCKETCHATRESTAPI_QT5_EXPORT RoomsCleanHistoryJob : public RestApiAbstractJob
16 {
17     Q_OBJECT
18 public:
19     struct LIBROCKETCHATRESTAPI_QT5_EXPORT CleanHistoryInfo {
20         Q_REQUIRED_RESULT bool isValid() const;
21         QDateTime latest; // required
22         QDateTime oldest; // required
23         QString roomId; // required
24         QStringList users;
25         bool inclusive = false;
26         bool excludePinned = false;
27         bool filesOnly = false;
28         bool ignoreThreads = false;
29         bool ignoreDiscussion = false;
30     };
31     explicit RoomsCleanHistoryJob(QObject *parent = nullptr);
32     ~RoomsCleanHistoryJob() override;
33 
34     Q_REQUIRED_RESULT bool start() override;
35     Q_REQUIRED_RESULT bool requireHttpAuthentication() const override;
36     Q_REQUIRED_RESULT bool canStart() const override;
37 
38     Q_REQUIRED_RESULT QNetworkRequest request() const override;
39 
40     Q_REQUIRED_RESULT QJsonDocument json() const;
41 
42     Q_REQUIRED_RESULT CleanHistoryInfo cleanHistoryInfo() const;
43     void setCleanHistoryInfo(const CleanHistoryInfo &cleanHistoryInfo);
44 
45 Q_SIGNALS:
46     void cleanHistoryDone();
47 
48 private:
49     Q_DISABLE_COPY(RoomsCleanHistoryJob)
50     void onPostRequestResponse(const QJsonDocument &replyJson) override;
51     CleanHistoryInfo mCleanHistoryInfo;
52 };
53 }
54 Q_DECLARE_TYPEINFO(RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo, Q_MOVABLE_TYPE);
55 LIBROCKETCHATRESTAPI_QT5_TESTS_EXPORT QDebug operator<<(QDebug d, const RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo &t);
56