aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/joining.h
diff options
context:
space:
mode:
authorAndres Salomon <dilinger@queued.net>2021-01-18 04:00:14 -0500
committerAndres Salomon <dilinger@queued.net>2021-01-18 04:00:14 -0500
commit09eb39236666e81d5da014acea011dcd74d0999b (patch)
tree52876d96be71be1a39d5d935c1295a51995e8949 /lib/csapi/joining.h
parentf1788ee27f33e9339334e0d79bde9a27d9ce2e44 (diff)
parenta4e78956f105875625b572d8b98459ffa86fafe5 (diff)
downloadlibquotient-09eb39236666e81d5da014acea011dcd74d0999b.tar.gz
libquotient-09eb39236666e81d5da014acea011dcd74d0999b.zip
Update upstream source from tag 'upstream/0.6.4'
Update to upstream version '0.6.4' with Debian dir aa8705fd74743e79c043bc9e3e425d5064404cfe
Diffstat (limited to 'lib/csapi/joining.h')
-rw-r--r--lib/csapi/joining.h222
1 files changed, 79 insertions, 143 deletions
diff --git a/lib/csapi/joining.h b/lib/csapi/joining.h
index 52c8ea42..dd936f92 100644
--- a/lib/csapi/joining.h
+++ b/lib/csapi/joining.h
@@ -4,148 +4,84 @@
#pragma once
-#include "jobs/basejob.h"
-
-#include "converters.h"
-#include <QtCore/QJsonObject>
-
-namespace QMatrixClient
-{
- // Operations
-
- /// Start the requesting user participating in a particular room.
- ///
- /// *Note that this API requires a room ID, not alias.* ``/join/{roomIdOrAlias}`` *exists if you have a room alias.*
- ///
- /// This API starts a user participating in a particular room, if that user
- /// is allowed to participate in that room. After this call, the client is
- /// allowed to see all current state events in the room, and all subsequent
- /// events associated with the room until the user leaves the room.
- ///
- /// After a user has joined a room, the room will appear as an entry in the
- /// response of the |/initialSync|_ and |/sync|_ APIs.
- ///
- /// If a ``third_party_signed`` was supplied, the homeserver must verify
- /// that it matches a pending ``m.room.third_party_invite`` event in the
- /// room, and perform key validity checking if required by the event.
- class JoinRoomByIdJob : public BaseJob
- {
- public:
- // Inner data structures
-
- /// A signature of an ``m.third_party_invite`` token to prove that this user owns a third party identity which has been invited to the room.
- struct ThirdPartySigned
- {
- /// The Matrix ID of the user who issued the invite.
- QString sender;
- /// The Matrix ID of the invitee.
- QString mxid;
- /// The state key of the m.third_party_invite event.
- QString token;
- /// A signatures object containing a signature of the entire signed object.
- QJsonObject signatures;
- };
-
- // Construction/destruction
-
- /*! Start the requesting user participating in a particular room.
- * \param roomId
- * The room identifier (not alias) to join.
- * \param thirdPartySigned
- * A signature of an ``m.third_party_invite`` token to prove that this user owns a third party identity which has been invited to the room.
- */
- explicit JoinRoomByIdJob(const QString& roomId, const Omittable<ThirdPartySigned>& thirdPartySigned = none);
- ~JoinRoomByIdJob() override;
-
- // Result properties
-
- /// The joined room ID.
- const QString& roomId() const;
-
- protected:
- Status parseJson(const QJsonDocument& data) override;
-
- private:
- class Private;
- QScopedPointer<Private> d;
- };
+#include "csapi/definitions/third_party_signed.h"
- /// Start the requesting user participating in a particular room.
- ///
- /// *Note that this API takes either a room ID or alias, unlike* ``/room/{roomId}/join``.
- ///
- /// This API starts a user participating in a particular room, if that user
- /// is allowed to participate in that room. After this call, the client is
- /// allowed to see all current state events in the room, and all subsequent
- /// events associated with the room until the user leaves the room.
- ///
- /// After a user has joined a room, the room will appear as an entry in the
- /// response of the |/initialSync|_ and |/sync|_ APIs.
- ///
- /// If a ``third_party_signed`` was supplied, the homeserver must verify
- /// that it matches a pending ``m.room.third_party_invite`` event in the
- /// room, and perform key validity checking if required by the event.
- class JoinRoomJob : public BaseJob
- {
- public:
- // Inner data structures
-
- /// *Note that this API takes either a room ID or alias, unlike* ``/room/{roomId}/join``.
- ///
- /// This API starts a user participating in a particular room, if that user
- /// is allowed to participate in that room. After this call, the client is
- /// allowed to see all current state events in the room, and all subsequent
- /// events associated with the room until the user leaves the room.
- ///
- /// After a user has joined a room, the room will appear as an entry in the
- /// response of the |/initialSync|_ and |/sync|_ APIs.
- ///
- /// If a ``third_party_signed`` was supplied, the homeserver must verify
- /// that it matches a pending ``m.room.third_party_invite`` event in the
- /// room, and perform key validity checking if required by the event.
- struct Signed
- {
- /// The Matrix ID of the user who issued the invite.
- QString sender;
- /// The Matrix ID of the invitee.
- QString mxid;
- /// The state key of the m.third_party_invite event.
- QString token;
- /// A signatures object containing a signature of the entire signed object.
- QJsonObject signatures;
- };
-
- /// A signature of an ``m.third_party_invite`` token to prove that this user owns a third party identity which has been invited to the room.
- struct ThirdPartySigned
- {
- /// A signature of an ``m.third_party_invite`` token to prove that this user owns a third party identity which has been invited to the room.
- Signed signedData;
- };
-
- // Construction/destruction
-
- /*! Start the requesting user participating in a particular room.
- * \param roomIdOrAlias
- * The room identifier or alias to join.
- * \param serverName
- * The servers to attempt to join the room through. One of the servers
- * must be participating in the room.
- * \param thirdPartySigned
- * A signature of an ``m.third_party_invite`` token to prove that this user owns a third party identity which has been invited to the room.
- */
- explicit JoinRoomJob(const QString& roomIdOrAlias, const QStringList& serverName = {}, const Omittable<ThirdPartySigned>& thirdPartySigned = none);
- ~JoinRoomJob() override;
-
- // Result properties
-
- /// The joined room ID.
- const QString& roomId() const;
-
- protected:
- Status parseJson(const QJsonDocument& data) override;
+#include "jobs/basejob.h"
- private:
- class Private;
- QScopedPointer<Private> d;
- };
-} // namespace QMatrixClient
+namespace Quotient {
+
+/*! \brief Start the requesting user participating in a particular room.
+ *
+ * *Note that this API requires a room ID, not alias.*
+ * ``/join/{roomIdOrAlias}`` *exists if you have a room alias.*
+ *
+ * This API starts a user participating in a particular room, if that user
+ * is allowed to participate in that room. After this call, the client is
+ * allowed to see all current state events in the room, and all subsequent
+ * events associated with the room until the user leaves the room.
+ *
+ * After a user has joined a room, the room will appear as an entry in the
+ * response of the |/initialSync|_ and |/sync|_ APIs.
+ */
+class JoinRoomByIdJob : public BaseJob {
+public:
+ /*! \brief Start the requesting user participating in a particular room.
+ *
+ * \param roomId
+ * The room identifier (not alias) to join.
+ *
+ * \param thirdPartySigned
+ * If supplied, the homeserver must verify that it matches a pending
+ * ``m.room.third_party_invite`` event in the room, and perform
+ * key validity checking if required by the event.
+ */
+ explicit JoinRoomByIdJob(
+ const QString& roomId,
+ const Omittable<ThirdPartySigned>& thirdPartySigned = none);
+
+ // Result properties
+
+ /// The joined room ID.
+ QString roomId() const { return loadFromJson<QString>("room_id"_ls); }
+};
+
+/*! \brief Start the requesting user participating in a particular room.
+ *
+ * *Note that this API takes either a room ID or alias, unlike*
+ * ``/room/{roomId}/join``.
+ *
+ * This API starts a user participating in a particular room, if that user
+ * is allowed to participate in that room. After this call, the client is
+ * allowed to see all current state events in the room, and all subsequent
+ * events associated with the room until the user leaves the room.
+ *
+ * After a user has joined a room, the room will appear as an entry in the
+ * response of the |/initialSync|_ and |/sync|_ APIs.
+ */
+class JoinRoomJob : public BaseJob {
+public:
+ /*! \brief Start the requesting user participating in a particular room.
+ *
+ * \param roomIdOrAlias
+ * The room identifier or alias to join.
+ *
+ * \param serverName
+ * The servers to attempt to join the room through. One of the servers
+ * must be participating in the room.
+ *
+ * \param thirdPartySigned
+ * If a ``third_party_signed`` was supplied, the homeserver must verify
+ * that it matches a pending ``m.room.third_party_invite`` event in the
+ * room, and perform key validity checking if required by the event.
+ */
+ explicit JoinRoomJob(
+ const QString& roomIdOrAlias, const QStringList& serverName = {},
+ const Omittable<ThirdPartySigned>& thirdPartySigned = none);
+
+ // Result properties
+
+ /// The joined room ID.
+ QString roomId() const { return loadFromJson<QString>("room_id"_ls); }
+};
+
+} // namespace Quotient