File indexing completed on 2024-06-02 05:07:17
0001 /* 0002 SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "roomfavoritejob.h" 0008 #include "restapimethod.h" 0009 #include "rocketchatqtrestapi_debug.h" 0010 0011 #include <KLocalizedString> 0012 0013 #include <QJsonDocument> 0014 #include <QJsonObject> 0015 #include <QNetworkReply> 0016 using namespace RocketChatRestApi; 0017 RoomFavoriteJob::RoomFavoriteJob(QObject *parent) 0018 : RestApiAbstractJob(parent) 0019 { 0020 } 0021 0022 RoomFavoriteJob::~RoomFavoriteJob() = default; 0023 0024 bool RoomFavoriteJob::start() 0025 { 0026 if (!canStart()) { 0027 deleteLater(); 0028 return false; 0029 } 0030 addStartRestApiInfo("RoomFavoriteJob::start"); 0031 submitPostRequest(json()); 0032 0033 return true; 0034 } 0035 0036 void RoomFavoriteJob::onPostRequestResponse(const QString &replyErrorString, const QJsonDocument &replyJson) 0037 { 0038 const QJsonObject replyObject = replyJson.object(); 0039 0040 if (replyObject[QLatin1String("success")].toBool()) { 0041 addLoggerInfo(QByteArrayLiteral("RoomFavoriteJob success: ") + replyJson.toJson(QJsonDocument::Indented)); 0042 Q_EMIT changeFavoriteDone(); 0043 } else { 0044 emitFailedMessage(replyErrorString, replyObject); 0045 addLoggerWarning(QByteArrayLiteral("RoomFavoriteJob: Problem: ") + replyJson.toJson(QJsonDocument::Indented)); 0046 } 0047 } 0048 0049 bool RoomFavoriteJob::favorite() const 0050 { 0051 return mFavorite; 0052 } 0053 0054 void RoomFavoriteJob::setFavorite(bool favorite) 0055 { 0056 mFavorite = favorite; 0057 } 0058 0059 QString RoomFavoriteJob::errorMessage(const QString &str, const QJsonObject &details) 0060 { 0061 if (str == QLatin1String("error-invalid-subscription")) { 0062 return i18n("Invalid Subscription"); 0063 } 0064 return RestApiAbstractJob::errorMessage(str, details); 0065 } 0066 0067 QString RoomFavoriteJob::roomId() const 0068 { 0069 return mRoomId; 0070 } 0071 0072 void RoomFavoriteJob::setRoomId(const QString &roomId) 0073 { 0074 mRoomId = roomId; 0075 } 0076 0077 bool RoomFavoriteJob::requireHttpAuthentication() const 0078 { 0079 return true; 0080 } 0081 0082 bool RoomFavoriteJob::canStart() const 0083 { 0084 if (!RestApiAbstractJob::canStart()) { 0085 return false; 0086 } 0087 if (mRoomId.isEmpty()) { 0088 qCWarning(ROCKETCHATQTRESTAPI_LOG) << "RoomFavoriteJob: mRoomId is empty"; 0089 return false; 0090 } 0091 return true; 0092 } 0093 0094 QNetworkRequest RoomFavoriteJob::request() const 0095 { 0096 const QUrl url = mRestApiMethod->generateUrl(RestApiUtil::RestApiUrlType::RoomsFavorite); 0097 QNetworkRequest request(url); 0098 addAuthRawHeader(request); 0099 addRequestAttribute(request); 0100 return request; 0101 } 0102 0103 QJsonDocument RoomFavoriteJob::json() const 0104 { 0105 QJsonObject jsonObj; 0106 jsonObj[QLatin1String("roomId")] = mRoomId; 0107 jsonObj[QLatin1String("favorite")] = mFavorite; 0108 0109 const QJsonDocument postData = QJsonDocument(jsonObj); 0110 return postData; 0111 } 0112 0113 #include "moc_roomfavoritejob.cpp"