File indexing completed on 2025-02-02 04:51:45
0001 /* 0002 SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "roomscleanhistoryjob.h" 0008 0009 #include "restapimethod.h" 0010 #include "rocketchatqtrestapi_debug.h" 0011 #include <QJsonArray> 0012 #include <QJsonDocument> 0013 #include <QJsonObject> 0014 #include <QNetworkReply> 0015 using namespace RocketChatRestApi; 0016 RoomsCleanHistoryJob::RoomsCleanHistoryJob(QObject *parent) 0017 : RestApiAbstractJob(parent) 0018 { 0019 } 0020 0021 RoomsCleanHistoryJob::~RoomsCleanHistoryJob() = default; 0022 0023 bool RoomsCleanHistoryJob::start() 0024 { 0025 if (!canStart()) { 0026 deleteLater(); 0027 return false; 0028 } 0029 addStartRestApiInfo("ChannelCleanHistoryJob::start"); 0030 submitPostRequest(json()); 0031 0032 return true; 0033 } 0034 0035 void RoomsCleanHistoryJob::onPostRequestResponse(const QString &replyErrorString, const QJsonDocument &replyJson) 0036 { 0037 const QJsonObject replyObject = replyJson.object(); 0038 0039 if (replyObject[QLatin1String("success")].toBool()) { 0040 addLoggerInfo(QByteArrayLiteral("ChannelCleanHistoryJob: success: ") + replyJson.toJson(QJsonDocument::Indented)); 0041 Q_EMIT cleanHistoryDone(); 0042 } else { 0043 emitFailedMessage(replyErrorString, replyObject); 0044 addLoggerWarning(QByteArrayLiteral("ChannelCleanHistoryJob: problem: ") + replyJson.toJson(QJsonDocument::Indented)); 0045 } 0046 } 0047 0048 RoomsCleanHistoryJob::CleanHistoryInfo RoomsCleanHistoryJob::cleanHistoryInfo() const 0049 { 0050 return mCleanHistoryInfo; 0051 } 0052 0053 void RoomsCleanHistoryJob::setCleanHistoryInfo(const CleanHistoryInfo &cleanHistoryInfo) 0054 { 0055 mCleanHistoryInfo = cleanHistoryInfo; 0056 } 0057 0058 bool RoomsCleanHistoryJob::requireHttpAuthentication() const 0059 { 0060 return true; 0061 } 0062 0063 bool RoomsCleanHistoryJob::canStart() const 0064 { 0065 if (!mCleanHistoryInfo.isValid()) { 0066 qCWarning(ROCKETCHATQTRESTAPI_LOG) << "mCleanHistoryInfo: mCleanHistoryInfo is not valid."; 0067 return false; 0068 } 0069 0070 if (!RestApiAbstractJob::canStart()) { 0071 return false; 0072 } 0073 return true; 0074 } 0075 0076 QJsonDocument RoomsCleanHistoryJob::json() const 0077 { 0078 QJsonObject jsonObj; 0079 jsonObj[QLatin1String("roomId")] = mCleanHistoryInfo.roomId; 0080 if (mCleanHistoryInfo.inclusive) { 0081 jsonObj[QLatin1String("inclusive")] = true; 0082 } 0083 if (mCleanHistoryInfo.ignoreThreads) { 0084 jsonObj[QLatin1String("ignoreThreads")] = true; 0085 } 0086 if (mCleanHistoryInfo.filesOnly) { 0087 jsonObj[QLatin1String("filesOnly")] = true; 0088 } 0089 if (mCleanHistoryInfo.excludePinned) { 0090 jsonObj[QLatin1String("excludePinned")] = true; 0091 } 0092 if (mCleanHistoryInfo.ignoreDiscussion) { 0093 jsonObj[QLatin1String("ignoreDiscussion")] = true; 0094 } 0095 0096 jsonObj[QLatin1String("latest")] = mCleanHistoryInfo.latest.toString(Qt::ISODateWithMs); 0097 jsonObj[QLatin1String("oldest")] = mCleanHistoryInfo.oldest.toString(Qt::ISODateWithMs); 0098 if (!mCleanHistoryInfo.users.isEmpty()) { 0099 jsonObj[QLatin1String("users")] = QJsonArray::fromStringList(mCleanHistoryInfo.users); 0100 } 0101 0102 const QJsonDocument postData = QJsonDocument(jsonObj); 0103 // qDebug() << " postData**************** " << postData; 0104 return postData; 0105 } 0106 0107 QNetworkRequest RoomsCleanHistoryJob::request() const 0108 { 0109 const QUrl url = mRestApiMethod->generateUrl(RestApiUtil::RestApiUrlType::RoomsCleanHistory); 0110 QNetworkRequest request(url); 0111 addAuthRawHeader(request); 0112 addRequestAttribute(request); 0113 return request; 0114 } 0115 0116 bool RoomsCleanHistoryJob::CleanHistoryInfo::isValid() const 0117 { 0118 return latest.isValid() && oldest.isValid() && !roomId.isEmpty(); 0119 } 0120 0121 QDebug operator<<(QDebug d, const RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo &t) 0122 { 0123 d << "latest " << t.latest; 0124 d << "oldest " << t.oldest; 0125 d << "roomId " << t.roomId; 0126 d << "users " << t.users; 0127 d << "inclusive " << t.inclusive; 0128 d << "excludePinned " << t.excludePinned; 0129 d << "filesOnly " << t.filesOnly; 0130 d << "ignoreThreads " << t.ignoreThreads; 0131 return d; 0132 } 0133 0134 #include "moc_roomscleanhistoryjob.cpp"