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"