From 0ec97b031c4d89acc9ea6e343620f3762f8eb51b Mon Sep 17 00:00:00 2001
From: Kitsune Ral <Kitsune-Ral@users.sf.net>
Date: Sat, 9 Feb 2019 19:26:19 +0900
Subject: csapi: UpgradeRoomJob (MSC1501)

---
 lib/csapi/room_upgrades.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++
 lib/csapi/room_upgrades.h   | 43 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+)
 create mode 100644 lib/csapi/room_upgrades.cpp
 create mode 100644 lib/csapi/room_upgrades.h

diff --git a/lib/csapi/room_upgrades.cpp b/lib/csapi/room_upgrades.cpp
new file mode 100644
index 00000000..f58fd675
--- /dev/null
+++ b/lib/csapi/room_upgrades.cpp
@@ -0,0 +1,49 @@
+/******************************************************************************
+ * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
+ */
+
+#include "room_upgrades.h"
+
+#include "converters.h"
+
+#include <QtCore/QStringBuilder>
+
+using namespace QMatrixClient;
+
+static const auto basePath = QStringLiteral("/_matrix/client/r0");
+
+class UpgradeRoomJob::Private
+{
+    public:
+        QString replacementRoom;
+};
+
+static const auto UpgradeRoomJobName = QStringLiteral("UpgradeRoomJob");
+
+UpgradeRoomJob::UpgradeRoomJob(const QString& roomId, const QString& newVersion)
+    : BaseJob(HttpVerb::Post, UpgradeRoomJobName,
+        basePath % "/rooms/" % roomId % "/upgrade")
+    , d(new Private)
+{
+    QJsonObject _data;
+    addParam<>(_data, QStringLiteral("new_version"), newVersion);
+    setRequestData(_data);
+}
+
+UpgradeRoomJob::~UpgradeRoomJob() = default;
+
+const QString& UpgradeRoomJob::replacementRoom() const
+{
+    return d->replacementRoom;
+}
+
+BaseJob::Status UpgradeRoomJob::parseJson(const QJsonDocument& data)
+{
+    auto json = data.object();
+    if (!json.contains("replacement_room"_ls))
+        return { JsonParseError,
+            "The key 'replacement_room' not found in the response" };
+    fromJson(json.value("replacement_room"_ls), d->replacementRoom);
+    return Success;
+}
+
diff --git a/lib/csapi/room_upgrades.h b/lib/csapi/room_upgrades.h
new file mode 100644
index 00000000..6f712f10
--- /dev/null
+++ b/lib/csapi/room_upgrades.h
@@ -0,0 +1,43 @@
+/******************************************************************************
+ * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
+ */
+
+#pragma once
+
+#include "jobs/basejob.h"
+
+
+namespace QMatrixClient
+{
+    // Operations
+
+    /// Upgrades a room to a new room version.
+    ///
+    /// Upgrades the given room to a particular room version, migrating as much
+    /// data as possible over to the new room. See the `room_upgrades <#room-upgrades>`_
+    /// module for more information on what this entails.
+    class UpgradeRoomJob : public BaseJob
+    {
+        public:
+            /*! Upgrades a room to a new room version.
+             * \param roomId
+             *   The ID of the room to upgrade.
+             * \param newVersion
+             *   The new version for the room.
+             */
+            explicit UpgradeRoomJob(const QString& roomId, const QString& newVersion);
+            ~UpgradeRoomJob() override;
+
+            // Result properties
+
+            /// The ID of the new room.
+            const QString& replacementRoom() const;
+
+        protected:
+            Status parseJson(const QJsonDocument& data) override;
+
+        private:
+            class Private;
+            QScopedPointer<Private> d;
+    };
+} // namespace QMatrixClient
-- 
cgit v1.2.3