1 /*
2    SPDX-FileCopyrightText: 2018-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "getroomsjob.h"
8 #include "restapimethod.h"
9 #include "rocketchatqtrestapi_debug.h"
10 #include <QJsonDocument>
11 #include <QJsonObject>
12 #include <QNetworkReply>
13 using namespace RocketChatRestApi;
GetRoomsJob(QObject * parent)14 GetRoomsJob::GetRoomsJob(QObject *parent)
15     : RestApiAbstractJob(parent)
16 {
17 }
18 
19 GetRoomsJob::~GetRoomsJob() = default;
20 
requireHttpAuthentication() const21 bool GetRoomsJob::requireHttpAuthentication() const
22 {
23     return true;
24 }
25 
start()26 bool GetRoomsJob::start()
27 {
28     if (!canStart()) {
29         qCWarning(ROCKETCHATQTRESTAPI_LOG) << "Impossible to start getrooms job";
30         deleteLater();
31         return false;
32     }
33     submitGetRequest();
34 
35     addStartRestApiInfo(QByteArrayLiteral("GetRoomsJob: Ask all rooms"));
36     return true;
37 }
38 
onGetRequestResponse(const QJsonDocument & replyJson)39 void GetRoomsJob::onGetRequestResponse(const QJsonDocument &replyJson)
40 {
41     const QJsonObject replyObject = replyJson.object();
42     if (replyObject[QStringLiteral("success")].toBool()) {
43         addLoggerInfo(QByteArrayLiteral("GetRoomsJob: success: ") + replyJson.toJson(QJsonDocument::Indented));
44         Q_EMIT getRoomsDone(replyObject);
45     } else {
46         emitFailedMessage(replyObject);
47         addLoggerWarning(QByteArrayLiteral("GetRoomsJob: Problem: ") + replyJson.toJson(QJsonDocument::Indented));
48     }
49 }
50 
request() const51 QNetworkRequest GetRoomsJob::request() const
52 {
53     const QUrl url = mRestApiMethod->generateUrl(RestApiUtil::RestApiUrlType::RoomsGet);
54     QNetworkRequest request(url);
55     addAuthRawHeader(request);
56     addRequestAttribute(request);
57     return request;
58 }
59