1 /*
2    SPDX-FileCopyrightText: 2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "addusertorolejob.h"
8 #include "restapimethod.h"
9 #include "rocketchatqtrestapi_debug.h"
10 
11 #include <QJsonDocument>
12 #include <QJsonObject>
13 #include <QNetworkReply>
14 using namespace RocketChatRestApi;
AddUserToRoleJob(QObject * parent)15 AddUserToRoleJob::AddUserToRoleJob(QObject *parent)
16     : RestApiAbstractJob(parent)
17 {
18 }
19 
20 AddUserToRoleJob::~AddUserToRoleJob() = default;
21 
start()22 bool AddUserToRoleJob::start()
23 {
24     if (!canStart()) {
25         deleteLater();
26         return false;
27     }
28     addStartRestApiInfo("AddUserToRoleJob::start");
29     submitPostRequest(json());
30     return true;
31 }
32 
onPostRequestResponse(const QJsonDocument & replyJson)33 void AddUserToRoleJob::onPostRequestResponse(const QJsonDocument &replyJson)
34 {
35     const QJsonObject replyObject = replyJson.object();
36     if (replyObject[QStringLiteral("success")].toBool()) {
37         addLoggerInfo(QByteArrayLiteral("AddUserToRoleJob: success: ") + replyJson.toJson(QJsonDocument::Indented));
38         Q_EMIT addUsersToRoleDone(replyObject);
39     } else {
40         emitFailedMessage(replyObject);
41         addLoggerWarning(QByteArrayLiteral("AddUserToRoleJob: Problem: ") + replyJson.toJson(QJsonDocument::Indented));
42     }
43 }
44 
username() const45 const QString &AddUserToRoleJob::username() const
46 {
47     return mUsername;
48 }
49 
setUsername(const QString & newUsername)50 void AddUserToRoleJob::setUsername(const QString &newUsername)
51 {
52     mUsername = newUsername;
53 }
54 
roleName() const55 const QString &AddUserToRoleJob::roleName() const
56 {
57     return mRoleName;
58 }
59 
setRoleName(const QString & newRoleName)60 void AddUserToRoleJob::setRoleName(const QString &newRoleName)
61 {
62     mRoleName = newRoleName;
63 }
64 
requireHttpAuthentication() const65 bool AddUserToRoleJob::requireHttpAuthentication() const
66 {
67     return true;
68 }
69 
canStart() const70 bool AddUserToRoleJob::canStart() const
71 {
72     if (!RestApiAbstractJob::canStart()) {
73         return false;
74     }
75     if (mRoleName.isEmpty()) {
76         qCWarning(ROCKETCHATQTRESTAPI_LOG) << "AddUserToRoleJob: mRoleName is not valid.";
77         return false;
78     }
79     if (mUsername.isEmpty()) {
80         qCWarning(ROCKETCHATQTRESTAPI_LOG) << "AddUserToRoleJob: mUsername is not valid.";
81         return false;
82     }
83     return true;
84 }
85 
request() const86 QNetworkRequest AddUserToRoleJob::request() const
87 {
88     const QUrl url = mRestApiMethod->generateUrl(RestApiUtil::RestApiUrlType::RolesAddUserToRole);
89     QNetworkRequest request(url);
90     addAuthRawHeader(request);
91     addRequestAttribute(request);
92     return request;
93 }
94 
json() const95 QJsonDocument AddUserToRoleJob::json() const
96 {
97     QJsonObject jsonObj;
98     jsonObj[QLatin1String("roleName")] = mRoleName;
99     jsonObj[QLatin1String("username")] = mUsername;
100 
101     const QJsonDocument postData = QJsonDocument(jsonObj);
102     return postData;
103 }
104