File indexing completed on 2025-02-02 04:51:43

0001 /*
0002    SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "librocketchatrestapi-qt_export.h"
0010 #include "restapiabstractjob.h"
0011 
0012 namespace RocketChatRestApi
0013 {
0014 class LIBROCKETCHATRESTAPI_QT_EXPORT DirectoryJob : public RestApiAbstractJob
0015 {
0016     Q_OBJECT
0017 public:
0018     explicit DirectoryJob(QObject *parent = nullptr);
0019     ~DirectoryJob() override;
0020     enum SearchType {
0021         Unknown = 0,
0022         Rooms = 1,
0023         Users = 2,
0024         Teams = 3,
0025     };
0026     struct LIBROCKETCHATRESTAPI_QT_EXPORT DirectoryInfo {
0027         SearchType searchType = SearchType::Unknown;
0028         QString pattern;
0029         [[nodiscard]] bool canStart() const;
0030         [[nodiscard]] bool operator==(const DirectoryInfo &other) const;
0031     };
0032 
0033     [[nodiscard]] bool requireHttpAuthentication() const override;
0034 
0035     [[nodiscard]] bool start() override;
0036 
0037     [[nodiscard]] QNetworkRequest request() const override;
0038 
0039     [[nodiscard]] bool canStart() const override;
0040 
0041     [[nodiscard]] DirectoryInfo directoryInfo() const;
0042     void setDirectoryInfo(const DirectoryInfo &directoryInfo);
0043 
0044     [[nodiscard]] bool hasQueryParameterSupport() const override;
0045 
0046 Q_SIGNALS:
0047     void directoryDone(const QJsonObject &obj);
0048 
0049 private:
0050     Q_DISABLE_COPY(DirectoryJob)
0051     LIBROCKETCHATRESTAPI_QT_NO_EXPORT void initialQueryParameters();
0052     LIBROCKETCHATRESTAPI_QT_NO_EXPORT void onGetRequestResponse(const QString &replyErrorString, const QJsonDocument &replyJson) override;
0053     DirectoryInfo mDirectoryInfo;
0054 };
0055 }