libQuotient
A Qt library for building matrix clients
|
Register for an account on this homeserver. More...
#include <registration.h>
Public Member Functions | |
RegisterJob (const QString &kind=QStringLiteral("user"), const std::optional< AuthenticationData > &auth=std::nullopt, const QString &username={}, const QString &password={}, const QString &deviceId={}, const QString &initialDeviceDisplayName={}, std::optional< bool > inhibitLogin=std::nullopt, std::optional< bool > refreshToken=std::nullopt) | |
QString | userId () const |
QString | accessToken () const |
QString | refreshToken () const |
std::optional< int > | expiresInMs () const |
QString | deviceId () const |
Public Member Functions inherited from Quotient::BaseJob | |
BaseJob (HttpVerb verb, const QString &name, QByteArray endpoint, bool needsToken=true) | |
BaseJob (HttpVerb verb, const QString &name, QByteArray endpoint, const QUrlQuery &query, RequestData &&data={}, bool needsToken=true) | |
QUrl | requestUrl () const |
bool | isBackground () const |
Status | status () const |
QString | statusCaption () const |
QByteArray | rawData (int bytesAtMost) const |
const QByteArray & | rawData () const |
QString | rawDataSample (int bytesAtMost=65535) const |
QJsonObject | jsonData () const |
QJsonArray | jsonItems () const |
template<typename T , typename StrT > | |
T | loadFromJson (const StrT &keyName, T &&defaultValue={}) const |
template<typename T > | |
T | takeFromJson (const QString &key, T &&defaultValue={}) |
int | error () const |
virtual QString | errorString () const |
QUrl | errorUrl () const |
int | maxRetries () const |
void | setMaxRetries (int newMaxRetries) |
std::chrono::seconds | getCurrentTimeout () const |
Q_INVOKABLE Quotient::BaseJob::duration_ms_t | getCurrentTimeoutMs () const |
std::chrono::seconds | getNextRetryInterval () const |
Q_INVOKABLE Quotient::BaseJob::duration_ms_t | getNextRetryMs () const |
std::chrono::milliseconds | timeToRetry () const |
Q_INVOKABLE Quotient::BaseJob::duration_ms_t | millisToRetry () const |
Additional Inherited Members | |
Public Types inherited from Quotient::BaseJob | |
enum | StatusCode { Success = 0 , NoError = Success , Pending = 1 , WarningLevel = 20 , UnexpectedResponseType = 21 , UnexpectedResponseTypeWarning = UnexpectedResponseType , Unprepared = 25 , Abandoned = 50 , ErrorLevel = 100 , NetworkError = 101 , Timeout , Unauthorised , ContentAccessError , NotFound , IncorrectRequest , IncorrectResponse , TooManyRequests , RateLimited = TooManyRequests , RequestNotImplemented , UnsupportedRoomVersion , NetworkAuthRequired , UserConsentRequired , CannotLeaveRoom , UserDeactivated , FileError , UserDefinedError = 256 } |
using | duration_ms_t = std::chrono::milliseconds::rep |
Public Slots inherited from Quotient::BaseJob | |
void | initiate (Quotient::ConnectionData *connData, bool inBackground) |
void | abandon () |
Abandon the result of this job, arrived or unarrived. More... | |
Signals inherited from Quotient::BaseJob | |
void | aboutToSendRequest (QNetworkRequest *req) |
The job is about to send a network request. More... | |
void | sentRequest () |
void | statusChanged (Quotient::BaseJob::Status newStatus) |
void | retryScheduled (int nextAttempt, Quotient::BaseJob::duration_ms_t inMilliseconds) |
void | rateLimited () |
void | finished (Quotient::BaseJob *job) |
void | result (Quotient::BaseJob *job) |
void | success (Quotient::BaseJob *) |
void | failure (Quotient::BaseJob *) |
void | downloadProgress (qint64 bytesReceived, qint64 bytesTotal) |
void | uploadProgress (qint64 bytesSent, qint64 bytesTotal) |
Static Public Member Functions inherited from Quotient::BaseJob | |
template<typename... StrTs> | |
static QByteArray | makePath (StrTs &&... parts) |
Protected Types inherited from Quotient::BaseJob | |
using | headers_t = QHash< QByteArray, QByteArray > |
Protected Slots inherited from Quotient::BaseJob | |
void | timeout () |
virtual Status | checkReply (const QNetworkReply *reply) const |
Check the pending or received reply for upfront issues. More... | |
Protected Member Functions inherited from Quotient::BaseJob | |
const headers_t & | requestHeaders () const |
void | setRequestHeader (const headers_t::key_type &headerName, const headers_t::mapped_type &headerValue) |
void | setRequestHeaders (const headers_t &headers) |
QUrlQuery | query () const |
void | setRequestQuery (const QUrlQuery &query) |
const RequestData & | requestData () const |
void | setRequestData (RequestData &&data) |
const QByteArrayList & | expectedContentTypes () const |
void | addExpectedContentType (const QByteArray &contentType) |
void | setExpectedContentTypes (const QByteArrayList &contentTypes) |
QByteArrayList | expectedKeys () const |
void | addExpectedKey (const QByteArray &key) |
void | setExpectedKeys (const QByteArrayList &keys) |
const QNetworkReply * | reply () const |
QNetworkReply * | reply () |
virtual void | doPrepare () |
virtual void | onSentRequest (QNetworkReply *) |
virtual void | beforeAbandon () |
virtual Status | prepareResult () |
An extension point for additional reply processing. More... | |
virtual Status | prepareError (Status currentStatus) |
Process details of the error. More... | |
QJsonValue | takeValueFromJson (const QString &key) |
Get direct access to the JSON response object in the job. More... | |
void | setStatus (Status s) |
void | setStatus (int code, QString message) |
void | setLoggingCategory (QMessageLogger::CategoryFunction lcf) |
Set the logging category for the given job instance. More... | |
~BaseJob () override | |
Static Protected Member Functions inherited from Quotient::BaseJob | |
static QUrl | makeRequestUrl (QUrl baseUrl, const QByteArray &encodedPath, const QUrlQuery &query={}) |
Properties inherited from Quotient::BaseJob | |
QUrl | requestUrl |
int | maxRetries |
int | statusCode |
Register for an account on this homeserver.
This API endpoint uses the User-Interactive Authentication API, except in the cases where a guest account is being registered.
Register for an account on this homeserver.
There are two kinds of user account:
user
accounts. These accounts may use the full API described in this specification.guest
accounts. These accounts may have limited permissions and may not be supported by all servers.If registration is successful, this endpoint will issue an access token the client can use to authorize itself in subsequent requests.
If the client does not supply a device_id
, the server must auto-generate one.
The server SHOULD register an account with a User ID based on the username
provided, if any. Note that the grammar of Matrix User ID localparts is restricted, so the server MUST either map the provided username
onto a user_id
in a logical manner, or reject any username
which does not comply to the grammar with M_INVALID_USERNAME
.
Matrix clients MUST NOT assume that localpart of the registered user_id
matches the provided username
.
The returned access token must be associated with the device_id
supplied by the client or generated by the server. The server may invalidate any access token previously associated with that device. See Relationship between access tokens and devices.
When registering a guest account, all parameters in the request body with the exception of initial_device_display_name
MUST BE ignored by the server. The server MUST pick a device_id
for the account regardless of input.
Any user ID returned by this API must conform to the grammar given in the Matrix specification.
Definition at line 58 of file registration.h.
|
explicit |
kind | The kind of account to register. Defaults to user . |
auth | Additional authentication information for the user-interactive authentication API. Note that this information is not used to define how the registered user should be authenticated, but is instead used to authenticate the register call itself. |
username | The basis for the localpart of the desired Matrix ID. If omitted, the homeserver MUST generate a Matrix ID local part. |
password | The desired password for the account. |
deviceId | ID of the client device. If this does not correspond to a known client device, a new device will be created. The server will auto-generate a device_id if this is not specified. |
initialDeviceDisplayName | A display name to assign to the newly-created device. Ignored if device_id corresponds to a known device. |
inhibitLogin | If true, an access_token and device_id should not be returned from this call, therefore preventing an automatic login. Defaults to false. |
refreshToken | If true, the client supports refresh tokens. |
|
inline |
An access token for the account. This access token can then be used to authorize other requests. Required if the inhibit_login
option is false.
Definition at line 111 of file registration.h.
|
inline |
ID of the registered device. Will be the same as the corresponding parameter in the request, if one was specified. Required if the inhibit_login
option is false.
Definition at line 136 of file registration.h.
|
inline |
The lifetime of the access token, in milliseconds. Once the access token has expired a new access token can be obtained by using the provided refresh token. If no refresh token is provided, the client will need to re-log in to obtain a new access token. If not given, the client can assume that the access token will not expire.
Omitted if the inhibit_login
option is true.
Definition at line 128 of file registration.h.
|
inline |
A refresh token for the account. This token can be used to obtain a new access token when it expires by calling the /refresh
endpoint.
Omitted if the inhibit_login
option is true.
Definition at line 118 of file registration.h.
|
inline |
The fully-qualified Matrix user ID (MXID) that has been registered.
Any user ID returned by this API must conform to the grammar given in the Matrix specification.
Definition at line 106 of file registration.h.