diff options
Diffstat (limited to 'lib/csapi/versions.h')
-rw-r--r-- | lib/csapi/versions.h | 103 |
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 |