diff options
Diffstat (limited to 'lib/csapi/openid.h')
-rw-r--r-- | lib/csapi/openid.h | 95 |
1 files changed, 43 insertions, 52 deletions
diff --git a/lib/csapi/openid.h b/lib/csapi/openid.h index 807801fb..b3f72a25 100644 --- a/lib/csapi/openid.h +++ b/lib/csapi/openid.h @@ -4,58 +4,49 @@ #pragma once +#include "csapi/definitions/openid_token.h" + #include "jobs/basejob.h" -#include "converters.h" -#include <QtCore/QJsonObject> - -namespace QMatrixClient -{ - // Operations - - /// Get an OpenID token object to verify the requester's identity. - /// - /// Gets an OpenID token object that the requester may supply to another - /// service to verify their identity in Matrix. The generated token is only - /// valid for exchanging for user information from the federation API for - /// OpenID. - /// - /// The access token generated is only valid for the OpenID API. It cannot - /// be used to request another OpenID access token or call ``/sync``, for - /// example. - class RequestOpenIdTokenJob : public BaseJob +namespace Quotient { + +/*! \brief Get an OpenID token object to verify the requester's identity. + * + * Gets an OpenID token object that the requester may supply to another + * service to verify their identity in Matrix. The generated token is only + * valid for exchanging for user information from the federation API for + * OpenID. + * + * The access token generated is only valid for the OpenID API. It cannot + * be used to request another OpenID access token or call `/sync`, for + * example. + */ +class QUOTIENT_API RequestOpenIdTokenJob : public BaseJob { +public: + /*! \brief Get an OpenID token object to verify the requester's identity. + * + * \param userId + * The user to request and OpenID token for. Should be the user who + * is authenticated for the request. + * + * \param body + * An empty object. Reserved for future expansion. + */ + explicit RequestOpenIdTokenJob(const QString& userId, + const QJsonObject& body = {}); + + // Result properties + + /// OpenID token information. This response is nearly compatible with the + /// response documented in the + /// [OpenID Connect 1.0 + /// Specification](http://openid.net/specs/openid-connect-core-1_0.html#TokenResponse) + /// with the only difference being the lack of an `id_token`. Instead, + /// the Matrix homeserver's name is provided. + OpenIdCredentials tokenData() const { - public: - /*! Get an OpenID token object to verify the requester's identity. - * \param userId - * The user to request and OpenID token for. Should be the user who - * is authenticated for the request. - * \param body - * An empty object. Reserved for future expansion. - */ - explicit RequestOpenIdTokenJob(const QString& userId, const QJsonObject& body = {}); - ~RequestOpenIdTokenJob() override; - - // Result properties - - /// An access token the consumer may use to verify the identity of - /// the person who generated the token. This is given to the federation - /// API ``GET /openid/userinfo``. - const QString& accessToken() const; - /// The string ``Bearer``. - const QString& tokenType() const; - /// The homeserver domain the consumer should use when attempting to - /// verify the user's identity. - const QString& matrixServerName() const; - /// The number of seconds before this token expires and a new one must - /// be generated. - int expiresIn() const; - - protected: - Status parseJson(const QJsonDocument& data) override; - - private: - class Private; - QScopedPointer<Private> d; - }; -} // namespace QMatrixClient + return fromJson<OpenIdCredentials>(jsonData()); + } +}; + +} // namespace Quotient |