File indexing completed on 2024-05-05 17:00:21
0001 /* 0002 SPDX-FileCopyrightText: 2017-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "channelgroupbasejob.h" 0010 #include "channels/channelhistoryjob.h" 0011 #include "commands/runcommandjob.h" 0012 #include "createchannelteaminfo.h" 0013 #include "custom/customuserstatuscreatejob.h" 0014 #include "custom/customuserstatusupdatejob.h" 0015 #include "invite/findorcreateinvitejob.h" 0016 #include "librocketchatrestapi-qt_export.h" 0017 #include "rooms/adminroomsjob.h" 0018 #include "rooms/roomscleanhistoryjob.h" 0019 #include "users/registeruserjob.h" 0020 #include "users/setavatarjob.h" 0021 #include "users/setstatusjob.h" 0022 #include "users/userbasejob.h" 0023 #include "users/usersautocompletejob.h" 0024 #include "users/userssetpreferencesjob.h" 0025 #include "users/usersupdateownbasicinfojob.h" 0026 #include <QObject> 0027 #include <QSslError> 0028 #include <QUrl> 0029 0030 class QNetworkAccessManager; 0031 class QNetworkReply; 0032 class QNetworkCookieJar; 0033 namespace RocketChatRestApi 0034 { 0035 class RestApiAbstractJob; 0036 class DownloadFileJob; 0037 class AbstractLogger; 0038 class LIBROCKETCHATRESTAPI_QT_EXPORT Connection : public QObject 0039 { 0040 Q_OBJECT 0041 public: 0042 explicit Connection(QObject *parent = nullptr); 0043 ~Connection() override; 0044 0045 void setRestApiLogger(RocketChatRestApi::AbstractLogger *logger); 0046 0047 [[nodiscard]] QString userId() const; 0048 [[nodiscard]] QString authToken() const; 0049 void setUserId(const QString &userId); 0050 void setAuthToken(const QString &authToken); 0051 0052 // Assign/get server url 0053 [[nodiscard]] QString serverUrl() const; 0054 void setServerUrl(const QString &serverUrl); 0055 0056 void setUserName(const QString &userName); 0057 void setPassword(const QString &password); 0058 0059 void initializeRestApiJob(RocketChatRestApi::RestApiAbstractJob *job); 0060 0061 void login(); 0062 void logout(); 0063 void getAvatar(const RocketChatRestApi::UserBaseJob::UserInfo &info); 0064 0065 void serverInfo(bool useDeprecatedVersion); 0066 void getPrivateSettings(); 0067 void getOwnInfo(); 0068 void starMessage(const QString &messageId, bool starred); 0069 RocketChatRestApi::DownloadFileJob * 0070 downloadFile(const QUrl &url, const QUrl &localFileUrl, const QByteArray &mimeType = "text/plain", bool requiredAuthentication = true); 0071 void changeChannelTopic(const QString &roomId, const QString &topic); 0072 void changeGroupsTopic(const QString &roomId, const QString &topic); 0073 void changeChannelAnnouncement(const QString &roomId, const QString &announcement); 0074 void changeGroupsAnnouncement(const QString &roomId, const QString &announcement); 0075 void postMessage(const QString &roomId, const QString &text); 0076 void deleteMessage(const QString &roomId, const QString &messageId); 0077 void createChannels(const RocketChatRestApi::CreateChannelTeamInfo &info); 0078 void createGroups(const RocketChatRestApi::CreateChannelTeamInfo &info); 0079 void leaveChannel(const QString &roomId); 0080 void leaveGroups(const QString &roomId); 0081 void updateMessage(const QString &roomId, const QString &messageId, const QString &text); 0082 void reactOnMessage(const QString &messageId, const QString &emoji, bool shouldReact); 0083 void closeChannel(const QString &roomId, const QString &type); 0084 void createDirectMessage(const QStringList &userName); 0085 void historyChannel(const QString &roomId, const QString &type); 0086 void changeChannelDescription(const QString &roomId, const QString &description); 0087 void changeGroupsDescription(const QString &roomId, const QString &description); 0088 void archiveChannel(const QString &roomId, bool archive); 0089 void archiveGroups(const QString &roomId, bool archive); 0090 void filesInRoom(const QString &roomId, const QString &type, int offset = 0, int count = 50); 0091 void addUserInChannel(const QString &roomId, const QString &userId); 0092 0093 void searchMessages(const QString &roomId, const QString &pattern, bool useRegularExpression = false); 0094 void markRoomAsRead(const QString &roomId); 0095 void getRooms(); 0096 void markAsFavorite(const QString &roomId, bool favorite); 0097 void addUserInGroup(const QString &roomId, const QString &userId); 0098 void disableNotifications(const QString &roomId, bool value); 0099 void hideUnreadStatus(const QString &roomId, bool value); 0100 void desktopNotifications(const QString &roomId, const QString &value); 0101 void emailNotifications(const QString &roomId, const QString &value); 0102 void mobilePushNotifications(const QString &roomId, const QString &value); 0103 void unreadAlert(const QString &roomId, const QString &value); 0104 void setAvatar(const UserBaseJob::UserInfo &info, const RocketChatRestApi::SetAvatarJob::SetAvatarInfo &avatarInfo); 0105 void markRoomAsUnRead(const QString &roomId); 0106 void markMessageAsUnReadFrom(const QString &messageId); 0107 void forgotPassword(const QString &email); 0108 void userInfo(const QString &identifier, bool userName = false); 0109 void ignoreUser(const QString &roomId, const QString &userId, bool ignore); 0110 void userPresence(const QString &userId); 0111 void reportMessage(const QString &messageId, const QString &message); 0112 void setGroupType(const QString &roomId, bool isPrivate); 0113 void setChannelType(const QString &roomId, bool isPrivate); 0114 void getGroupRoles(const QString &roomId); 0115 void getChannelRoles(const QString &roomId); 0116 void getUsernameSuggestion(); 0117 void listAllPermissions(); 0118 void fetchMyKeys(); 0119 void setJoinCodeChannel(const QString &roomId, const QString &joinCode); 0120 void muteGroupMentions(const QString &roomId, bool value); 0121 0122 void channelInfo(const QString &roomId); 0123 0124 void syncThreadMessages(const QString &threadMessageId, const QString ×tamp); 0125 void changeChannelName(const QString &roomId, const QString &newName); 0126 void changeGroupName(const QString &roomId, const QString &newName); 0127 void groupInfo(const QString &roomId); 0128 void channelGetAllUserMentions(const QString &roomId, int offset = 0, int count = 50); 0129 void openDirectMessage(const QString &userId); 0130 void channelKick(const QString &roomId, const QString &userId); 0131 void groupKick(const QString &roomId, const QString &userId); 0132 void groupAddModerator(const QString &roomId, const QString &userId); 0133 void groupRemoveModerator(const QString &roomId, const QString &userId); 0134 void groupAddLeader(const QString &roomId, const QString &userId); 0135 void groupRemoveLeader(const QString &roomId, const QString &userId); 0136 void groupAddOwner(const QString &roomId, const QString &userId); 0137 void groupRemoveOwner(const QString &roomId, const QString &userId); 0138 void channelAddModerator(const QString &roomId, const QString &userId); 0139 void channelRemoveModerator(const QString &roomId, const QString &userId); 0140 void channelAddOwner(const QString &roomId, const QString &userId); 0141 void channelRemoveOwner(const QString &roomId, const QString &userId); 0142 void channelDelete(const QString &roomId); 0143 void groupDelete(const QString &roomId); 0144 void membersInRoom(const QString &roomId, const QString &type, int offset = 0, int count = 50); 0145 void changeChannelReadOnly(const QString &roomId, bool b); 0146 void changeGroupsReadOnly(const QString &roomId, bool b); 0147 void channelAddLeader(const QString &roomId, const QString &userId); 0148 void channelRemoveLeader(const QString &roomId, const QString &userId); 0149 void changeGroupsEncrypted(const QString &roomId, bool b); 0150 void pinMessage(const QString &messageId, bool pinned); 0151 void desktopDurationNotifications(const QString &roomId, int value); 0152 void desktopSoundNotifications(const QString &roomId, const QString &value); 0153 void followMessage(const QString &messageId); 0154 void unFollowMessage(const QString &messageId); 0155 void createDiscussion(const QString &parentRoomId, 0156 const QString &discussionName, 0157 const QString &replyMessage, 0158 const QString &parentMessageId, 0159 const QStringList &users); 0160 void getDiscussions(const QString &roomId, int offset = 0, int count = 50); 0161 void getThreadsList(const QString &roomId, bool onlyUnread, int offset = 0, int count = 50); 0162 void getThreadMessages(const QString &threadMessageId); 0163 void sendMessage(const QString &roomId, const QString &text, const QString &messageId = QString(), const QString &threadMessageId = QString()); 0164 void getPinnedMessages(const QString &roomId, int offset = 0, int count = 50); 0165 void autoTranslateSaveLanguageSettings(const QString &roomId, const QString &language); 0166 void autoTranslateSaveAutoTranslateSettings(const QString &roomId, bool autoTranslate); 0167 void setUserStatus(const QString &userId, SetStatusJob::StatusType status, const QString &message = QString()); 0168 void usersPresence(); 0169 void getStarredMessages(const QString &roomId, int offset = 0, int count = 50); 0170 void getSnippetedMessages(const QString &roomId, int offset = 0, int count = 50); 0171 void customUserStatus(); 0172 void usersAutocomplete(const UsersAutocompleteJob::UsersAutocompleterInfo &info); 0173 void findOrCreateInvite(const QString &roomId, int maxUses, int numberOfDays); 0174 void getMessage(const QString &messageId, const QString &roomId); 0175 void getCommand(const QString &commandName); 0176 void runCommand(const RunCommandJob::RunCommandInfo &runCommandInfo); 0177 void sendUserEmailCode(const QString &identifier); 0178 void deleteOwnAccount(const QString &password); 0179 void registerNewUser(const RocketChatRestApi::RegisterUserJob::RegisterUserInfo &userInfo); 0180 void enable2FaEmailJob(bool enable); 0181 void updateOwnBasicInfo(const RocketChatRestApi::UsersUpdateOwnBasicInfoJob::UpdateOwnBasicInfo &info); 0182 void cleanChannelHistory(const RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo &info); 0183 void getRoomsAdmin(const RocketChatRestApi::AdminRoomsJob::AdminRoomsJobInfo &info); 0184 void getChannelsCounter(const QString &roomId); 0185 void setUserPreferences(const RocketChatRestApi::UsersSetPreferencesJob::UsersSetPreferencesInfo &info); 0186 void removeOtherTokens(); 0187 void createCustomUserStatus(const CustomUserStatusCreateJob::StatusCreateInfo &statusCreateInfo); 0188 void deleteCustomUserStatus(const QString &customUserStatusId); 0189 void updateCustomUserStatus(const CustomUserStatusUpdateJob::StatusUpdateInfo &statusUpdateInfo); 0190 void resetAvatar(const UserBaseJob::UserInfo &info); 0191 void statistics(bool refresh); 0192 void searchRooms(const QString &pattern); 0193 void getMentionedMessages(const QString &roomId, int offset = 0, int count = 50); 0194 void hideMentionStatus(const QString &roomId, bool value); 0195 void historyChannel(const RocketChatRestApi::ChannelHistoryJob::ChannelHistoryInfo &info); 0196 0197 Q_SIGNALS: 0198 void avatar(const UserBaseJob::UserInfo &info, const QUrl &url); 0199 void redownloadAvatar(); 0200 void loginDone(const QString &authToken, const QString &userId); 0201 void downloadFileDone(const QUrl &url, const QUrl &localFileUrl); 0202 void serverInfoDone(const QString &version); 0203 void serverInfoFailed(bool useDeprecatedVersion); 0204 void getOwnInfoDone(const QJsonObject &data); 0205 void privateInfoDone(const QJsonObject &data); 0206 void channelFilesDone(const QJsonObject &obj, const ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0207 void channelMembersDone(const QJsonObject &obj, const ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0208 void syncThreadMessagesDone(const QJsonObject &obj, const QString &threadMessageId); 0209 void searchMessageDone(const QJsonObject &obj); 0210 void getRoomsDone(const QJsonObject &obj); 0211 void userInfoDone(const QJsonObject &obj); 0212 void channelRolesDone(const QJsonObject &obj, const ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0213 void getUsernameSuggestionDone(const QString &username); 0214 void getPresenceDone(const QString &presence); 0215 void permissionListAllDone(const QJsonObject &obj); 0216 void getCommandsDone(const QJsonObject &obj); 0217 void fetchMyKeysDone(); 0218 void setJoinCodeDone(); 0219 void channelGetAllUserMentionsDone(const QJsonObject &obj, const QString &roomId); 0220 void channelKickUserDone(const QJsonObject &obj); 0221 void groupKickUserDone(const QJsonObject &obj); 0222 void addModeratorDone(); 0223 void removeModeratorDone(); 0224 void addLeaderDone(); 0225 void removeLeaderDone(); 0226 void addOwnerDone(); 0227 void channelRemoveOwnerDone(); 0228 void groupRemoveOwnerDone(); 0229 void deletechannelDone(); 0230 void deleteGroupsDone(); 0231 void pinMessageDone(); 0232 void ignoreUserDone(const QJsonObject &obj, const QString &roomId); 0233 void groupRolesDone(const QJsonObject &obj, const ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0234 void followMessageDone(); 0235 void unFollowMessageDone(); 0236 void startDiscussionDone(); 0237 void getDiscussionsDone(const QJsonObject &obj, const QString &roomId); 0238 void getThreadsDone(const QJsonObject &obj, const QString &roomId, bool onlyUnread); 0239 void getThreadMessagesDone(const QJsonObject &obj, const QString &threadMessageId); 0240 void getPinnedMessagesDone(const QJsonObject &obj, const QString &roomId); 0241 void getStarredMessagesDone(const QJsonObject &obj, const QString &roomId); 0242 void getSnippetedMessagesDone(const QJsonObject &obj, const QString &roomId); 0243 void getMentionedMessagesDone(const QJsonObject &obj, const QString &roomId); 0244 void roomsAdminDone(const QJsonObject &obj); 0245 void translateSavesettingsDone(); 0246 void setStatusDone(); 0247 void usersPresenceDone(const QJsonObject &obj); 0248 void customUserStatusDone(const QJsonObject &); 0249 0250 void usersAutocompleteDone(const QJsonObject &obj); 0251 0252 void failed(const QString &str); 0253 void networkSessionFailedError(); 0254 void findOrCreateInviteDone(const RocketChatRestApi::FindOrCreateInviteJob::InviteUsersInfo &info); 0255 0256 void getMessageDone(const QJsonObject &obj, const QString &messageId, const QString &roomId); 0257 void runCommandDone(); 0258 void sendEmailCodeDone(); 0259 void deleteOwnAccountDone(); 0260 void registerUserDone(); 0261 void enableEmailDone(); 0262 void disableEmailDone(); 0263 void updateOwnBasicInfoDone(); 0264 void cleanHistoryDone(); 0265 void channelGetCountersDone(const QJsonObject &obj, const ChannelGroupBaseJob::ChannelGroupInfo &channelInfo); 0266 void markAsReadDone(const QString &roomId); 0267 void usersSetPreferencesDone(const QJsonObject &replyObject); 0268 void removeOtherTokensDone(); 0269 void createUserStatusDone(); 0270 void userStatusDeletedDone(); 0271 void customUserUpdateDone(); 0272 void postMessageDone(const QJsonObject &replyObject); 0273 void resetAvatarDone(); 0274 void statisticDone(const QJsonObject &replyObject); 0275 void updateMessageFailed(const QString &str); 0276 0277 private: 0278 Q_DISABLE_COPY(Connection) 0279 LIBROCKETCHATRESTAPI_QT_NO_EXPORT void initializeCookies(); 0280 LIBROCKETCHATRESTAPI_QT_NO_EXPORT void slotResult(QNetworkReply *reply); 0281 LIBROCKETCHATRESTAPI_QT_NO_EXPORT void slotSslErrors(QNetworkReply *reply, const QList<QSslError> &error); 0282 LIBROCKETCHATRESTAPI_QT_NO_EXPORT void slotLogout(); 0283 LIBROCKETCHATRESTAPI_QT_NO_EXPORT void slotLogin(const QString &authToken, const QString &userId); 0284 LIBROCKETCHATRESTAPI_QT_NO_EXPORT void slotAddJoinCodeToChannel(const QString &channelId, const QString &password); 0285 0286 QNetworkAccessManager *const mNetworkAccessManager; 0287 QNetworkCookieJar *const mCookieJar; 0288 RestApiMethod *const mRestApiMethod; 0289 RocketChatRestApi::AbstractLogger *mRuqolaLogger = nullptr; 0290 QString mUserId; 0291 QString mAuthToken; 0292 QString mUserName; 0293 QString mPassword; 0294 bool mSessionFailed = false; 0295 }; 0296 }