File indexing completed on 2024-12-22 04:45:28
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 "getpresencejob.h" 0008 #include "restapimethod.h" 0009 #include "rocketchatqtrestapi_debug.h" 0010 #include <QJsonDocument> 0011 #include <QJsonObject> 0012 #include <QNetworkReply> 0013 using namespace RocketChatRestApi; 0014 GetPresenceJob::GetPresenceJob(QObject *parent) 0015 : UserBaseJob(parent) 0016 { 0017 } 0018 0019 GetPresenceJob::~GetPresenceJob() = default; 0020 0021 bool GetPresenceJob::canStart() const 0022 { 0023 if (!hasUserIdentifier()) { 0024 qCWarning(ROCKETCHATQTRESTAPI_LOG) << "GetPresenceJob: identifier is empty"; 0025 return false; 0026 } 0027 if (!RestApiAbstractJob::canStart()) { 0028 return false; 0029 } 0030 return true; 0031 } 0032 0033 bool GetPresenceJob::start() 0034 { 0035 if (!canStart()) { 0036 deleteLater(); 0037 return false; 0038 } 0039 submitGetRequest(); 0040 addStartRestApiInfo("GetPresenceJob ask for presenceUserId: " + mUserInfo.userIdentifier.toLatin1()); 0041 return true; 0042 } 0043 0044 void GetPresenceJob::onGetRequestResponse(const QString &replyErrorString, const QJsonDocument &replyJson) 0045 { 0046 const QJsonObject replyObject = replyJson.object(); 0047 0048 if (replyObject[QLatin1String("success")].toBool()) { 0049 addLoggerInfo(QByteArrayLiteral("GetPresenceJob: success: ") + replyJson.toJson(QJsonDocument::Indented)); 0050 Q_EMIT getPresenceDone(replyObject[QLatin1String("presence")].toString()); 0051 } else { 0052 emitFailedMessage(replyErrorString, replyObject); 0053 addLoggerWarning(QByteArrayLiteral("GetPresenceJob problem: ") + replyJson.toJson(QJsonDocument::Indented)); 0054 } 0055 } 0056 0057 QNetworkRequest GetPresenceJob::request() const 0058 { 0059 QUrl url = mRestApiMethod->generateUrl(RestApiUtil::RestApiUrlType::UsersGetPresence); 0060 addQueryUrl(url); 0061 QNetworkRequest request(url); 0062 addAuthRawHeader(request); 0063 return request; 0064 } 0065 0066 bool GetPresenceJob::requireHttpAuthentication() const 0067 { 0068 return true; 0069 } 0070 0071 #include "moc_getpresencejob.cpp"