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