aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/openid.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/openid.h')
-rw-r--r--lib/csapi/openid.h95
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