libQuotient
A Qt library for building matrix clients
|
Register for an account on this homeserver. More...
#include <registration.h>
Classes | |
struct | Response |
Public Member Functions | |
RegisterJob (const QString &kind=u"user"_s, 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 |
Current status of the job. More... | |
QString | statusCaption () const |
Short human-friendly message on the job status. More... | |
QByteArray | rawData (int bytesAtMost) const |
Get first bytes of the raw response body as received from the server. More... | |
const QByteArray & | rawData () const |
Access the whole response body as received from the server. More... | |
QString | rawDataSample (int bytesAtMost=65535) const |
Get UI-friendly sample of raw data. More... | |
QJsonObject | jsonData () const |
Get the response body as a JSON object. More... | |
QJsonArray | jsonItems () const |
Get the response body as a JSON array. More... | |
template<typename T > | |
T | loadFromJson (auto keyName, T &&defaultValue={}) const |
Load the property from the JSON response assuming a given C++ type. More... | |
template<typename T > | |
T | takeFromJson (auto key, T &&defaultValue={}) |
Load the property from the JSON response and delete it from JSON. More... | |
int | error () const |
Error (more generally, status) code. More... | |
virtual QString | errorString () const |
Error-specific message, as returned by the server. More... | |
QUrl | errorUrl () const |
A URL to help/clarify the error, if provided by the server. More... | |
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 , AccountLocked , UserDefinedError = 256 } |
Job status codes. More... | |
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 () |
The job has sent a network request. More... | |
void | statusChanged (Quotient::BaseJob::Status newStatus) |
The job has changed its status. More... | |
void | retryScheduled (int nextAttempt, Quotient::BaseJob::duration_ms_t inMilliseconds) |
A retry of the network request is scheduled after the previous request failed. More... | |
void | rateLimited () |
The job has been rate-limited. More... | |
void | finished (Quotient::BaseJob *job) |
The job has finished - either with a result, or abandoned. More... | |
void | result (Quotient::BaseJob *job) |
The job has finished with a result, successful or unsuccessful. More... | |
void | success (Quotient::BaseJob *) |
The job has finished with a successful result. More... | |
void | failure (Quotient::BaseJob *) |
The job has finished with a failure result Emitted together with result() when the job resulted in an error. Mutually exclusive with success(): after result() is emitted, exactly one of success() and failure() will be emitted next. Will not be emitted in case of abandon()ing. More... | |
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 (QByteArrayView base, StrTs &&... parts) |
Protected Types inherited from Quotient::BaseJob | |
using | headers_t = QHash< QByteArray, QByteArray > |
Protected Slots inherited from Quotient::BaseJob | |
void | timeout () |
Protected Member Functions inherited from Quotient::BaseJob | |
QByteArray | apiEndpoint () const |
void | setApiEndpoint (QByteArray apiEndpoint) |
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) |
QStringList | expectedKeys () const |
void | addExpectedKey (QString key) |
void | setExpectedKeys (const QStringList &keys) |
const QNetworkReply * | reply () const |
QNetworkReply * | reply () |
virtual void | doPrepare (const ConnectionData *) |
Prepare the job for execution. More... | |
virtual void | onSentRequest (QNetworkReply *) |
Postprocessing after the network request has been sent. More... | |
virtual void | beforeAbandon () |
virtual Status | checkReply (const QNetworkReply *reply) const |
Check the pending or received reply for upfront issues. More... | |
virtual Status | prepareResult () |
An extension point for additional reply processing. More... | |
virtual Status | prepareError (Status currentStatus) |
Process details of the error. More... | |
QJsonValue | takeValueFromJson (QAnyStringView key) |
Retrieve a value for one specific key and delete it from the JSON response object. More... | |
void | setStatus (Status s) |
void | setStatus (int code, QString message) |
void | forceResult (QJsonDocument resultDoc, Status s={ Success }) |
Force completion of the job for sake of testing. More... | |
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 (const HomeserverData &hsData, const QByteArray &encodedPath, const QUrlQuery &query={}) |
Construct a URL out of baseUrl, path and query. More... | |
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.