[network/ruqola] src/rocketchatrestapi-qt: Generate encryption info
Laurent Montel <[email protected]> Tue, 4 Aug 2026 11:54:24 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit fe3848f9ad066676e7a4e943b59814d27b8482e5 by Laurent Montel.
Committed on 04/08/2026 at 11:43.
Pushed by mlaurent into branch 'master'.
Generate encryption info
M +13 -0 src/rocketchatrestapi-qt/autotests/sendmessagejobtest.cpp
M +1 -0 src/rocketchatrestapi-qt/autotests/sendmessagejobtest.h
M +16 -1 src/rocketchatrestapi-qt/chat/sendmessagejob.cpp
M +11 -0 src/rocketchatrestapi-qt/chat/sendmessagejob.h
https://invent.kde.org/network/ruqola/-/commit/fe3848f9ad066676e7a4e943b59814d27b8482e5
diff --git a/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.cpp b/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.cpp
index 6a72521b28..95abae6ff3 100644
--- a/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.cpp
+++ b/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.cpp
@@ -68,6 +68,19 @@ void SendMessageJobTest::shouldGenerateJson()
QStringLiteral(R"({"message":{"_id":"%4","msg":"%2","rid":"%1","tmid":"%3"}})").arg(roomId, text, threadId, messageId).toLatin1());
}
+void SendMessageJobTest::shouldGenerateJsonEncrypted()
+{
+ SendMessageJob job;
+ const QString roomId = u"foo1"_s;
+ const QString text = u"topic1"_s;
+ SendMessageJob::SendMessageArguments args;
+ args.roomId = roomId;
+ args.encrypted = true;
+ job.setSendMessageArguments(args);
+ QCOMPARE(job.json().toJson(QJsonDocument::Compact),
+ QStringLiteral(R"({"content":{"algorithm":"","ciphertext":"","iv":"","kid":""},"message":{"rid":"foo1"},"t":"e2e"})").toLatin1());
+}
+
void SendMessageJobTest::shouldNotStarting()
{
SendMessageJob job;
diff --git a/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.h b/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.h
index a9dcfe9f71..2caa73162f 100644
--- a/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.h
+++ b/src/rocketchatrestapi-qt/autotests/sendmessagejobtest.h
@@ -18,5 +18,6 @@ private Q_SLOTS:
void shouldHaveDefaultValue();
void shouldGenerateRequest();
void shouldGenerateJson();
+ void shouldGenerateJsonEncrypted();
void shouldNotStarting();
};
diff --git a/src/rocketchatrestapi-qt/chat/sendmessagejob.cpp b/src/rocketchatrestapi-qt/chat/sendmessagejob.cpp
index 66251ecfc8..f692c6f625 100644
--- a/src/rocketchatrestapi-qt/chat/sendmessagejob.cpp
+++ b/src/rocketchatrestapi-qt/chat/sendmessagejob.cpp
@@ -97,10 +97,25 @@ QJsonDocument SendMessageJob::json() const
jsonObj["tmid"_L1] = mSendMessageArguments.threadMessageId;
}
jsonObj["rid"_L1] = mSendMessageArguments.roomId;
- jsonObj["msg"_L1] = mSendMessageArguments.message;
+ if (mSendMessageArguments.encrypted) {
+ message["content"_L1] = mSendMessageArguments.info.generateJson();
+ message["t"_L1] = u"e2e"_s;
+ } else {
+ jsonObj["msg"_L1] = mSendMessageArguments.message;
+ }
message["message"_L1] = jsonObj;
const QJsonDocument postData = QJsonDocument(message);
return postData;
}
+QJsonObject SendMessageJob::EncryptedInfo::generateJson() const
+{
+ QJsonObject o;
+ o["algorithm"_L1] = QString::fromLatin1(algorithm);
+ o["ciphertext"_L1] = ciphertext;
+ o["iv"_L1] = QString::fromLatin1(iv);
+ o["kid"_L1] = QString::fromLatin1(keyId);
+ return o;
+}
+
#include "moc_sendmessagejob.cpp"
diff --git a/src/rocketchatrestapi-qt/chat/sendmessagejob.h b/src/rocketchatrestapi-qt/chat/sendmessagejob.h
index c1719715bb..6dcff4ff80 100644
--- a/src/rocketchatrestapi-qt/chat/sendmessagejob.h
+++ b/src/rocketchatrestapi-qt/chat/sendmessagejob.h
@@ -17,12 +17,21 @@ public:
explicit SendMessageJob(QObject *parent = nullptr);
~SendMessageJob() override;
+ struct EncryptedInfo {
+ QByteArray algorithm;
+ QByteArray keyId;
+ QString ciphertext; // TODO QByteArray ?
+ QByteArray iv;
+ [[nodiscard]] QJsonObject generateJson() const;
+ };
+
struct SendMessageArguments {
QString messageId;
QString roomId;
QString threadMessageId;
QString message;
bool encrypted = false;
+ EncryptedInfo info;
};
[[nodiscard]] bool start() override;
@@ -43,5 +52,7 @@ private:
SendMessageArguments mSendMessageArguments;
};
}
+Q_DECLARE_METATYPE(RocketChatRestApi::SendMessageJob::EncryptedInfo)
+Q_DECLARE_TYPEINFO(RocketChatRestApi::SendMessageJob::EncryptedInfo, Q_RELOCATABLE_TYPE);
Q_DECLARE_METATYPE(RocketChatRestApi::SendMessageJob::SendMessageArguments)
Q_DECLARE_TYPEINFO(RocketChatRestApi::SendMessageJob::SendMessageArguments, Q_RELOCATABLE_TYPE);