aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/versions.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/versions.h')
-rw-r--r--lib/csapi/versions.h103
1 files changed, 49 insertions, 54 deletions
diff --git a/lib/csapi/versions.h b/lib/csapi/versions.h
index b56f293f..828a7eb9 100644
--- a/lib/csapi/versions.h
+++ b/lib/csapi/versions.h
@@ -6,63 +6,58 @@
#include "jobs/basejob.h"
-#include <QtCore/QHash>
-#include "converters.h"
-
-namespace QMatrixClient
-{
- // Operations
-
- /// Gets the versions of the specification supported by the server.
- ///
+namespace Quotient {
+
+/*! \brief Gets the versions of the specification supported by the server.
+ *
+ * Gets the versions of the specification supported by the server.
+ *
+ * Values will take the form ``rX.Y.Z``.
+ *
+ * Only the latest ``Z`` value will be reported for each supported ``X.Y``
+ * value. i.e. if the server implements ``r0.0.0``, ``r0.0.1``, and ``r1.2.0``,
+ * it will report ``r0.0.1`` and ``r1.2.0``.
+ *
+ * The server may additionally advertise experimental features it supports
+ * through ``unstable_features``. These features should be namespaced and
+ * may optionally include version information within their name if desired.
+ * Features listed here are not for optionally toggling parts of the Matrix
+ * specification and should only be used to advertise support for a feature
+ * which has not yet landed in the spec. For example, a feature currently
+ * undergoing the proposal process may appear here and eventually be taken
+ * off this list once the feature lands in the spec and the server deems it
+ * reasonable to do so. Servers may wish to keep advertising features here
+ * after they've been released into the spec to give clients a chance to
+ * upgrade appropriately. Additionally, clients should avoid using unstable
+ * features in their stable releases.
+ */
+class GetVersionsJob : public BaseJob {
+public:
/// Gets the versions of the specification supported by the server.
- ///
- /// Values will take the form ``rX.Y.Z``.
- ///
- /// Only the latest ``Z`` value will be reported for each supported ``X.Y`` value.
- /// i.e. if the server implements ``r0.0.0``, ``r0.0.1``, and ``r1.2.0``, it will report ``r0.0.1`` and ``r1.2.0``.
- ///
- /// The server may additionally advertise experimental features it supports
- /// through ``unstable_features``. These features should be namespaced and
- /// may optionally include version information within their name if desired.
- /// Features listed here are not for optionally toggling parts of the Matrix
- /// specification and should only be used to advertise support for a feature
- /// which has not yet landed in the spec. For example, a feature currently
- /// undergoing the proposal process may appear here and eventually be taken
- /// off this list once the feature lands in the spec and the server deems it
- /// reasonable to do so. Servers may wish to keep advertising features here
- /// after they've been released into the spec to give clients a chance to
- /// upgrade appropriately. Additionally, clients should avoid using unstable
- /// features in their stable releases.
- class GetVersionsJob : public BaseJob
- {
- public:
- explicit GetVersionsJob();
-
- /*! Construct a URL without creating a full-fledged job object
- *
- * This function can be used when a URL for
- * GetVersionsJob is necessary but the job
- * itself isn't.
- */
- static QUrl makeRequestUrl(QUrl baseUrl);
+ explicit GetVersionsJob();
- ~GetVersionsJob() override;
+ /*! \brief Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for GetVersionsJob
+ * is necessary but the job itself isn't.
+ */
+ static QUrl makeRequestUrl(QUrl baseUrl);
- // Result properties
+ // Result properties
- /// The supported versions.
- const QStringList& versions() const;
- /// Experimental features the server supports. Features not listed here,
- /// or the lack of this property all together, indicate that a feature is
- /// not supported.
- const QHash<QString, bool>& unstableFeatures() const;
+ /// The supported versions.
+ QStringList versions() const
+ {
+ return loadFromJson<QStringList>("versions"_ls);
+ }
- protected:
- Status parseJson(const QJsonDocument& data) override;
+ /// Experimental features the server supports. Features not listed here,
+ /// or the lack of this property all together, indicate that a feature is
+ /// not supported.
+ QHash<QString, bool> unstableFeatures() const
+ {
+ return loadFromJson<QHash<QString, bool>>("unstable_features"_ls);
+ }
+};
- private:
- class Private;
- QScopedPointer<Private> d;
- };
-} // namespace QMatrixClient
+} // namespace Quotient