diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-07-18 18:42:02 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-07-18 18:42:02 +0900 |
commit | f3a251404c00787b650e618fb5c257162507c18b (patch) | |
tree | a801eb5f444a8b2b3f8d93d2b64e22785bbf3f97 /lib/csapi/third_party_lookup.h | |
parent | 5e6b4bb975fa9697a6aca001629c65db506a437f (diff) | |
download | libquotient-f3a251404c00787b650e618fb5c257162507c18b.tar.gz libquotient-f3a251404c00787b650e618fb5c257162507c18b.zip |
csapi: third_party_lookup.* and its dependencies in application-service/
As per the latest API definitions.
Diffstat (limited to 'lib/csapi/third_party_lookup.h')
-rw-r--r-- | lib/csapi/third_party_lookup.h | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/lib/csapi/third_party_lookup.h b/lib/csapi/third_party_lookup.h new file mode 100644 index 00000000..c66902d7 --- /dev/null +++ b/lib/csapi/third_party_lookup.h @@ -0,0 +1,240 @@ +/****************************************************************************** + * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN + */ + +#pragma once + +#include "jobs/basejob.h" + +#include "csapi/../application-service/definitions/protocol_metadata.h" +#include "csapi/../application-service/definitions/protocol.h" +#include "converters.h" +#include "csapi/../application-service/definitions/location_batch.h" +#include "csapi/../application-service/definitions/user_batch.h" + +namespace QMatrixClient +{ + // Operations + + /// Retrieve metadata about all protocols that a homeserver supports. + /// + /// Fetches the overall metadata about protocols supported by the + /// homeserver. Includes both the available protocols and all fields + /// required for queries against each protocol. + class GetProtocolsJob : public BaseJob + { + public: + explicit GetProtocolsJob(); + + /*! Construct a URL without creating a full-fledged job object + * + * This function can be used when a URL for + * GetProtocolsJob is necessary but the job + * itself isn't. + */ + static QUrl makeRequestUrl(QUrl baseUrl); + + ~GetProtocolsJob() override; + + // Result properties + + /// The protocols supported by the homeserver. + const ProtocolMetadata& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + + private: + class Private; + QScopedPointer<Private> d; + }; + + /// Retrieve metadata about a specific protocol that the homeserver supports. + /// + /// Fetches the metadata from the homeserver about a particular third party protocol. + class GetProtocolMetadataJob : public BaseJob + { + public: + /*! Retrieve metadata about a specific protocol that the homeserver supports. + * \param protocol + * The name of the protocol. + */ + explicit GetProtocolMetadataJob(const QString& protocol); + + /*! Construct a URL without creating a full-fledged job object + * + * This function can be used when a URL for + * GetProtocolMetadataJob is necessary but the job + * itself isn't. + */ + static QUrl makeRequestUrl(QUrl baseUrl, const QString& protocol); + + ~GetProtocolMetadataJob() override; + + // Result properties + + /// The protocol was found and metadata returned. + const Protocol& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + + private: + class Private; + QScopedPointer<Private> d; + }; + + /// Retreive Matrix-side portals rooms leading to a third party location. + /// + /// Requesting this endpoint with a valid protocol name results in a list + /// of successful mapping results in a JSON array. Each result contains + /// objects to represent the Matrix room or rooms that represent a portal + /// to this third party network. Each has the Matrix room alias string, + /// an identifier for the particular third party network protocol, and an + /// object containing the network-specific fields that comprise this + /// identifier. It should attempt to canonicalise the identifier as much + /// as reasonably possible given the network type. + class QueryLocationByProtocolJob : public BaseJob + { + public: + /*! Retreive Matrix-side portals rooms leading to a third party location. + * \param protocol + * The protocol used to communicate to the third party network. + * \param searchFields + * One or more custom fields to help identify the third party + * location. + */ + explicit QueryLocationByProtocolJob(const QString& protocol, const QString& searchFields = {}); + + /*! Construct a URL without creating a full-fledged job object + * + * This function can be used when a URL for + * QueryLocationByProtocolJob is necessary but the job + * itself isn't. + */ + static QUrl makeRequestUrl(QUrl baseUrl, const QString& protocol, const QString& searchFields = {}); + + ~QueryLocationByProtocolJob() override; + + // Result properties + + /// At least one portal room was found. + const LocationBatch& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + + private: + class Private; + QScopedPointer<Private> d; + }; + + /// Retrieve the Matrix User ID of a corresponding third party user. + /// + /// Retrieve a Matrix User ID linked to a user on the third party service, given + /// a set of user parameters. + class QueryUserByProtocolJob : public BaseJob + { + public: + /*! Retrieve the Matrix User ID of a corresponding third party user. + * \param protocol + * The name of the protocol. + * \param field1Field2 + * One or more custom fields that are passed to the AS to help identify the user. + */ + explicit QueryUserByProtocolJob(const QString& protocol, const QString& field1Field2 = {}); + + /*! Construct a URL without creating a full-fledged job object + * + * This function can be used when a URL for + * QueryUserByProtocolJob is necessary but the job + * itself isn't. + */ + static QUrl makeRequestUrl(QUrl baseUrl, const QString& protocol, const QString& field1Field2 = {}); + + ~QueryUserByProtocolJob() override; + + // Result properties + + /// The Matrix User IDs found with the given parameters. + const UserBatch& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + + private: + class Private; + QScopedPointer<Private> d; + }; + + /// Reverse-lookup third party locations given a Matrix room alias. + /// + /// Retreive an array of third party network locations from a Matrix room + /// alias. + class QueryLocationByAliasJob : public BaseJob + { + public: + /*! Reverse-lookup third party locations given a Matrix room alias. + * \param alias + * The Matrix room alias to look up. + */ + explicit QueryLocationByAliasJob(const QString& alias); + + /*! Construct a URL without creating a full-fledged job object + * + * This function can be used when a URL for + * QueryLocationByAliasJob is necessary but the job + * itself isn't. + */ + static QUrl makeRequestUrl(QUrl baseUrl, const QString& alias); + + ~QueryLocationByAliasJob() override; + + // Result properties + + /// All found third party locations. + const LocationBatch& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + + private: + class Private; + QScopedPointer<Private> d; + }; + + /// Reverse-lookup third party users given a Matrix User ID. + /// + /// Retreive an array of third party users from a Matrix User ID. + class QueryUserByIDJob : public BaseJob + { + public: + /*! Reverse-lookup third party users given a Matrix User ID. + * \param userid + * The Matrix User ID to look up. + */ + explicit QueryUserByIDJob(const QString& userid); + + /*! Construct a URL without creating a full-fledged job object + * + * This function can be used when a URL for + * QueryUserByIDJob is necessary but the job + * itself isn't. + */ + static QUrl makeRequestUrl(QUrl baseUrl, const QString& userid); + + ~QueryUserByIDJob() override; + + // Result properties + + /// An array of third party users. + const UserBatch& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + + private: + class Private; + QScopedPointer<Private> d; + }; +} // namespace QMatrixClient |