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 
12 #include <QNetworkRequest>
13 namespace RocketChatRestApi
14 {
15 class LIBROCKETCHATRESTAPI_QT5_EXPORT AdminRoomsJob : public RestApiAbstractJob
16 {
17     Q_OBJECT
18 public:
19     enum class AdminRoomSearchType {
20         None = 0,
21         Direct = 1,
22         Public = 2,
23         Private = 4,
24         Channel = 8,
25         Team = 16,
26         All = Direct | Private | Channel | Team,
27     };
28     Q_DECLARE_FLAGS(AdminRoomSearchTypes, AdminRoomSearchType)
29     Q_FLAG(AdminRoomSearchType)
30 
31     struct LIBROCKETCHATRESTAPI_QT5_EXPORT AdminRoomsJobInfo {
32         QString filter;
33         AdminRoomSearchTypes searchType = AdminRoomSearchType::None;
34     };
35 
36     explicit AdminRoomsJob(QObject *parent = nullptr);
37     ~AdminRoomsJob() override;
38 
39     Q_REQUIRED_RESULT bool requireHttpAuthentication() const override;
40 
41     Q_REQUIRED_RESULT bool start() override;
42 
43     Q_REQUIRED_RESULT QNetworkRequest request() const override;
44 
45     Q_REQUIRED_RESULT AdminRoomsJobInfo roomsAdminInfo() const;
46     void setRoomsAdminInfo(const AdminRoomsJobInfo &roomsAdminInfo);
47     Q_REQUIRED_RESULT bool hasQueryParameterSupport() const override;
48 
49 Q_SIGNALS:
50     void adminRoomsDone(const QJsonObject &obj);
51 
52 private:
53     Q_DISABLE_COPY(AdminRoomsJob)
54     void onGetRequestResponse(const QJsonDocument &replyJson) override;
55     void initialUrlParameters(QUrlQuery &urlQuery) const;
56     AdminRoomsJobInfo mRoomsAdminInfo;
57 };
58 }
59