File indexing completed on 2023-11-26 08:17:53

0001 /*
0002    SPDX-FileCopyrightText: 2017-2023 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "libruqola_private_export.h"
0010 #include "user.h"
0011 #include <QDebug>
0012 #include <QJsonDocument>
0013 #include <QString>
0014 class QDateTime;
0015 class LIBRUQOLACORE_TESTS_EXPORT RocketChatMessage
0016 {
0017     Q_GADGET
0018 public:
0019     RocketChatMessage();
0020     ~RocketChatMessage() = default;
0021 
0022     struct RocketChatMessageResult {
0023         QString method;
0024         QString result;
0025         QJsonDocument jsonDocument;
0026     };
0027 
0028     void setJsonFormat(QJsonDocument::JsonFormat jsonFormat);
0029 
0030     [[nodiscard]] RocketChatMessageResult generateMethod(const QString &method, const QJsonDocument &params, quint64 id);
0031     [[nodiscard]] RocketChatMessage::RocketChatMessageResult setRoomEncrypted(const QString &roomId, bool encrypted, quint64 id);
0032     [[nodiscard]] RocketChatMessage::RocketChatMessageResult joinRoom(const QString &roomId, const QString &accessCode, quint64 id);
0033     [[nodiscard]] RocketChatMessage::RocketChatMessageResult informTypingStatus(const QString &roomId, const QString &userId, bool typingStatus, quint64 id);
0034     [[nodiscard]] RocketChatMessage::RocketChatMessageResult setDefaultStatus(User::PresenceStatus status, quint64 id);
0035     [[nodiscard]] RocketChatMessage::RocketChatMessageResult openDirectChannel(const QString &username, quint64 id);
0036     [[nodiscard]] RocketChatMessage::RocketChatMessageResult createJitsiConfCall(const QString &roomId, quint64 id);
0037     [[nodiscard]] RocketChatMessage::RocketChatMessageResult userAutocomplete(const QString &searchText, const QString &exception, quint64 id);
0038     [[nodiscard]] RocketChatMessage::RocketChatMessageResult unsubscribe(quint64 id);
0039     [[nodiscard]] RocketChatMessage::RocketChatMessageResult blockUser(const QString &rid, const QString &userId, quint64 id);
0040     [[nodiscard]] RocketChatMessage::RocketChatMessageResult unblockUser(const QString &rid, const QString &userId, quint64 id);
0041 
0042     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0043     searchRoomUsers(const QString &pattern, const QString &exceptions, bool searchUser, bool searchRoom, quint64 id);
0044     [[nodiscard]] RocketChatMessage::RocketChatMessageResult inputChannelAutocomplete(const QString &pattern, const QString &exceptions, quint64 id);
0045     [[nodiscard]] RocketChatMessage::RocketChatMessageResult inputUserAutocomplete(const QString &pattern, const QString &exceptions, quint64 id);
0046 
0047     [[nodiscard]] RocketChatMessage::RocketChatMessageResult deleteFileMessage(const QString &fileId, quint64 id);
0048 
0049     [[nodiscard]] RocketChatMessage::RocketChatMessageResult roomNameExists(const QString &roomName, quint64 id);
0050 
0051     [[nodiscard]] RocketChatMessage::RocketChatMessageResult streamNotifyUserOtrEnd(const QString &userFrom, const QString &userTo, quint64 id);
0052 
0053     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0054     streamNotifyUserOtrHandshake(const QString &userFrom, const QString &userTo, const QString &publicKeys, quint64 id);
0055 
0056     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0057     streamNotifyUserOtrAcknowledge(const QString &roomId, const QString &userId, const QString &publicKeys, quint64 id);
0058 
0059     [[nodiscard]] RocketChatMessage::RocketChatMessageResult deleteCustomSound(const QString &identifier, quint64 id);
0060 
0061     [[nodiscard]] RocketChatMessage::RocketChatMessageResult uploadCustomSound(const QByteArray &sound, quint64 id);
0062 
0063     [[nodiscard]] RocketChatMessage::RocketChatMessageResult listCustomSounds(quint64 id);
0064 
0065     [[nodiscard]] RocketChatMessage::RocketChatMessageResult enable2fa(quint64 id);
0066 
0067     [[nodiscard]] RocketChatMessage::RocketChatMessageResult disable2fa(const QString &code, quint64 id);
0068     [[nodiscard]] RocketChatMessage::RocketChatMessageResult validateTempToken2fa(const QString &code, quint64 id);
0069 
0070     [[nodiscard]] RocketChatMessage::RocketChatMessageResult regenerateCodes2fa(const QString &code, quint64 id);
0071 
0072     [[nodiscard]] RocketChatMessage::RocketChatMessageResult deleteOAuthApp(const QString &appId, quint64 id);
0073 
0074     [[nodiscard]] RocketChatMessage::RocketChatMessageResult addOAuthApp(const QString &name, bool active, const QString &redirectUrl, quint64 id);
0075     [[nodiscard]] RocketChatMessage::RocketChatMessageResult updateOAuthApp(const QString &name, bool active, const QString &redirectUrl, quint64 id);
0076 
0077     [[nodiscard]] RocketChatMessage::RocketChatMessageResult setAdminStatus(const QString &userId, bool admin, quint64 id);
0078 
0079     [[nodiscard]] RocketChatMessage::RocketChatMessageResult openRoom(const QString &roomId, quint64 id);
0080 
0081     [[nodiscard]] RocketChatMessage::RocketChatMessageResult getRoomById(const QString &roomId, quint64 id);
0082 
0083     [[nodiscard]] RocketChatMessage::RocketChatMessageResult bannerDismiss(const QString &bannerId, quint64 id);
0084 
0085     [[nodiscard]] RocketChatMessage::RocketChatMessageResult licenseGetModules(quint64 id);
0086 
0087     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0088     videoConferenceAccepted(const QString &roomId, const QString &callId, const QString &userId, quint64 id);
0089 
0090     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0091     videoConferenceRejected(const QString &roomId, const QString &callId, const QString &userId, quint64 id);
0092 
0093     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0094     videoConferenceCall(const QString &roomId, const QString &callId, const QString &userId, quint64 id);
0095 
0096     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0097     videoConferenceConfirmed(const QString &roomId, const QString &callId, const QString &userId, quint64 id);
0098 
0099 private:
0100     Q_DISABLE_COPY(RocketChatMessage)
0101     [[nodiscard]] QJsonValue toJsonDateTime(const QDateTime &dateTime);
0102     [[nodiscard]] RocketChatMessage::RocketChatMessageResult subscribe(const QString &name, const QJsonDocument &params, quint64 id);
0103     [[nodiscard]] RocketChatMessage::RocketChatMessageResult saveRoomSettings(const QString &key, const QString &roomId, const QJsonValue &value, quint64 id);
0104     QJsonDocument::JsonFormat mJsonFormat = QJsonDocument::Compact;
0105     [[nodiscard]] RocketChatMessage::RocketChatMessageResult
0106     generateVideoConferenceAction(const QString &action, const QString &roomId, const QString &callId, const QString &userId, quint64 id);
0107 };
0108 
0109 LIBRUQOLACORE_EXPORT QDebug operator<<(QDebug d, const RocketChatMessage::RocketChatMessageResult &t);