diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-09-02 16:08:13 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2018-09-29 22:00:06 +0900 |
commit | 1e6510790dab6b9141ae52993987b406399668cd (patch) | |
tree | 1a45c0ccfec8f5f7ba37eb4385cdc7f61afa0c97 /lib/csapi/administrative_contact.h | |
parent | 4244cee8d5e0f760cccd2b45ad587670573ef03c (diff) | |
download | libquotient-1e6510790dab6b9141ae52993987b406399668cd.tar.gz libquotient-1e6510790dab6b9141ae52993987b406399668cd.zip |
Support CS API 0.4.0
Numerous changes in CS (and now also AS) API, including compatibility-breaking ones - see the diff for details.
Diffstat (limited to 'lib/csapi/administrative_contact.h')
-rw-r--r-- | lib/csapi/administrative_contact.h | 143 |
1 files changed, 111 insertions, 32 deletions
diff --git a/lib/csapi/administrative_contact.h b/lib/csapi/administrative_contact.h index 53123e7a..3fb3d44c 100644 --- a/lib/csapi/administrative_contact.h +++ b/lib/csapi/administrative_contact.h @@ -6,6 +6,7 @@ #include "jobs/basejob.h" +#include "csapi/../identity/definitions/sid.h" #include "converters.h" #include <QtCore/QVector> @@ -19,7 +20,7 @@ namespace QMatrixClient /// associated with the user's account. /// /// This is *not* the same as the list of third party identifiers bound to - /// the user's Matrix ID in Identity Servers. + /// the user's Matrix ID in identity servers. /// /// Identifiers in this list may be used by the homeserver as, for example, /// identifiers that it will accept to reset the user's account password. @@ -32,7 +33,7 @@ namespace QMatrixClient /// associated with the user's account. /// /// This is *not* the same as the list of third party identifiers bound to - /// the user's Matrix ID in Identity Servers. + /// the user's Matrix ID in identity servers. /// /// Identifiers in this list may be used by the homeserver as, for example, /// identifiers that it will accept to reset the user's account password. @@ -42,6 +43,11 @@ namespace QMatrixClient QString medium; /// The third party identifier address. QString address; + /// The timestamp, in milliseconds, when the identifier was + /// validated by the identity server. + qint64 validatedAt; + /// The timestamp, in milliseconds, when the homeserver associated the third party identifier with the user. + qint64 addedAt; }; // Construction/destruction @@ -64,7 +70,7 @@ namespace QMatrixClient /// associated with the user's account. /// /// This is *not* the same as the list of third party identifiers bound to - /// the user's Matrix ID in Identity Servers. + /// the user's Matrix ID in identity servers. /// /// Identifiers in this list may be used by the homeserver as, for example, /// identifiers that it will accept to reset the user's account password. @@ -89,11 +95,11 @@ namespace QMatrixClient /// The third party credentials to associate with the account. struct ThreePidCredentials { - /// The client secret used in the session with the Identity Server. + /// The client secret used in the session with the identity server. QString clientSecret; - /// The Identity Server to use. + /// The identity server to use. QString idServer; - /// The session identifier given by the Identity Server. + /// The session identifier given by the identity server. QString sid; }; @@ -110,49 +116,122 @@ namespace QMatrixClient explicit Post3PIDsJob(const ThreePidCredentials& threePidCreds, bool bind = false); }; - /// Requests a validation token be sent to the given email address for the purpose of adding an email address to an account + /// Deletes a third party identifier from the user's account /// - /// Proxies the identity server API ``validate/email/requestToken``, but + /// Removes a third party identifier from the user's account. This might not + /// cause an unbind of the identifier from the identity server. + class Delete3pidFromAccountJob : public BaseJob + { + public: + /*! Deletes a third party identifier from the user's account + * \param medium + * The medium of the third party identifier being removed. + * \param address + * The third party address being removed. + */ + explicit Delete3pidFromAccountJob(const QString& medium, const QString& address); + }; + + /// Begins the validation process for an email address for association with the user's account. + /// + /// Proxies the Identity Service API ``validate/email/requestToken``, but /// first checks that the given email address is **not** already associated - /// with an account on this Home Server. This API should be used to request + /// with an account on this homeserver. This API should be used to request /// validation tokens when adding an email address to an account. This API's - /// parameters and response is identical to that of the HS API - /// |/register/email/requestToken|_ endpoint. + /// parameters and response are identical to that of the |/register/email/requestToken|_ + /// endpoint. class RequestTokenTo3PIDEmailJob : public BaseJob { public: - explicit RequestTokenTo3PIDEmailJob(); - - /*! Construct a URL without creating a full-fledged job object - * - * This function can be used when a URL for - * RequestTokenTo3PIDEmailJob is necessary but the job - * itself isn't. + /*! Begins the validation process for an email address for association with the user's account. + * \param clientSecret + * A unique string generated by the client, and used to identify the + * validation attempt. It must be a string consisting of the characters + * ``[0-9a-zA-Z.=_-]``. Its length must not exceed 255 characters and it + * must not be empty. + * \param email + * The email address to validate. + * \param sendAttempt + * The server will only send an email if the ``send_attempt`` + * is a number greater than the most recent one which it has seen, + * scoped to that ``email`` + ``client_secret`` pair. This is to + * avoid repeatedly sending the same email in the case of request + * retries between the POSTing user and the identity server. + * The client should increment this value if they desire a new + * email (e.g. a reminder) to be sent. + * \param idServer + * The hostname of the identity server to communicate with. May + * optionally include a port. + * \param nextLink + * Optional. When the validation is completed, the identity + * server will redirect the user to this URL. */ - static QUrl makeRequestUrl(QUrl baseUrl); + explicit RequestTokenTo3PIDEmailJob(const QString& clientSecret, const QString& email, int sendAttempt, const QString& idServer, const QString& nextLink = {}); + ~RequestTokenTo3PIDEmailJob() override; + + // Result properties + + /// An email was sent to the given address. + const Sid& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + private: + class Private; + QScopedPointer<Private> d; }; - /// Requests a validation token be sent to the given email address for the purpose of adding a phone number to an account. + /// Begins the validation process for a phone number for association with the user's account. /// - /// Proxies the identity server API ``validate/msisdn/requestToken``, but + /// Proxies the Identity Service API ``validate/msisdn/requestToken``, but /// first checks that the given phone number is **not** already associated - /// with an account on this Home Server. This API should be used to request + /// with an account on this homeserver. This API should be used to request /// validation tokens when adding a phone number to an account. This API's - /// parameters and response is identical to that of the HS API - /// |/register/msisdn/requestToken|_ endpoint. + /// parameters and response are identical to that of the |/register/msisdn/requestToken|_ + /// endpoint. class RequestTokenTo3PIDMSISDNJob : public BaseJob { public: - explicit RequestTokenTo3PIDMSISDNJob(); - - /*! Construct a URL without creating a full-fledged job object - * - * This function can be used when a URL for - * RequestTokenTo3PIDMSISDNJob is necessary but the job - * itself isn't. + /*! Begins the validation process for a phone number for association with the user's account. + * \param clientSecret + * A unique string generated by the client, and used to identify the + * validation attempt. It must be a string consisting of the characters + * ``[0-9a-zA-Z.=_-]``. Its length must not exceed 255 characters and it + * must not be empty. + * \param country + * The two-letter uppercase ISO country code that the number in + * ``phone_number`` should be parsed as if it were dialled from. + * \param phoneNumber + * The phone number to validate. + * \param sendAttempt + * The server will only send an SMS if the ``send_attempt`` is a + * number greater than the most recent one which it has seen, + * scoped to that ``country`` + ``phone_number`` + ``client_secret`` + * triple. This is to avoid repeatedly sending the same SMS in + * the case of request retries between the POSTing user and the + * identity server. The client should increment this value if + * they desire a new SMS (e.g. a reminder) to be sent. + * \param idServer + * The hostname of the identity server to communicate with. May + * optionally include a port. + * \param nextLink + * Optional. When the validation is completed, the identity + * server will redirect the user to this URL. */ - static QUrl makeRequestUrl(QUrl baseUrl); + explicit RequestTokenTo3PIDMSISDNJob(const QString& clientSecret, const QString& country, const QString& phoneNumber, int sendAttempt, const QString& idServer, const QString& nextLink = {}); + ~RequestTokenTo3PIDMSISDNJob() override; + // Result properties + + /// An SMS message was sent to the given phone number. + const Sid& data() const; + + protected: + Status parseJson(const QJsonDocument& data) override; + + private: + class Private; + QScopedPointer<Private> d; }; } // namespace QMatrixClient |