libkazv
Kazv::Api::RegisterJob Class Reference

Register for an account on this homeserver. More...

#include <registration.hpp>

Inheritance diagram for Kazv::Api::RegisterJob:
Collaboration diagram for Kazv::Api::RegisterJob:

Classes

class  JobResponse
 

Public Member Functions

 RegisterJob (std::string serverUrl, std::string kind=std::string("user"), std::optional< AuthenticationData > auth=std::nullopt, std::optional< std::string > username=std::nullopt, std::optional< std::string > password=std::nullopt, std::optional< std::string > deviceId=std::nullopt, std::optional< std::string > initialDeviceDisplayName=std::nullopt, std::optional< bool > inhibitLogin=std::nullopt, std::optional< bool > refreshToken=std::nullopt)
 Register for an account on this homeserver. More...
 
RegisterJob withData (JsonWrap j) &&
 
RegisterJob withData (JsonWrap j) const &
 
- Public Member Functions inherited from Kazv::BaseJob
 BaseJob (std::string serverUrl, std::string requestUrl, Method method, std::string jobId, std::string token={}, ReturnType returnType=ReturnType::Json, Body body=EmptyBody{}, Query query={}, Header header={}, std::optional< FileDesc > responseFile=std::nullopt)
 
 ~BaseJob ()
 
bool shouldReturnJson () const
 
std::string url () const
 
Body requestBody () const
 
Header requestHeader () const
 
ReturnType returnType () const
 
Query requestQuery () const
 returns the non-encoded query as an array of pairs More...
 
Method requestMethod () const
 
Response genResponse (Response r) const
 
BaseJob withData (JsonWrap j) &&
 
BaseJob withData (JsonWrap j) const &
 
BaseJob withQueue (std::string id, JobQueuePolicy policy=AlwaysContinue) &&
 
BaseJob withQueue (std::string id, JobQueuePolicy policy=AlwaysContinue) const &
 
json dataJson (const std::string &key) const
 
std::string dataStr (const std::string &key) const
 
std::string jobId () const
 
std::optional< std::string > queueId () const
 
JobQueuePolicy queuePolicy () const
 
std::optional< FileDescresponseFile () const
 

Static Public Member Functions

static constexpr auto needsAuth ()
 
static BaseJob::Query buildQuery (std::string kind)
 
static BaseJob::Body buildBody (std::string kind, std::optional< AuthenticationData > auth, std::optional< std::string > username, std::optional< std::string > password, std::optional< std::string > deviceId, std::optional< std::string > initialDeviceDisplayName, std::optional< bool > inhibitLogin, std::optional< bool > refreshToken)
 
- Static Public Member Functions inherited from Kazv::BaseJob
static bool contentTypeMatches (immer::array< std::string > expected, std::string actual)
 

Additional Inherited Members

- Public Types inherited from Kazv::BaseJob
enum  ReturnType { Json, File }
 
using Method = std::variant< Get, Post, Put, Delete >
 
using Body = ::Kazv::Body
 
using BytesBody = ::Kazv::BytesBody
 
using JsonBody = ::Kazv::JsonBody
 
using EmptyBody = ::Kazv::EmptyBody
 
using Header = ::Kazv::Header
 
using Response = ::Kazv::Response
 
- Static Public Attributes inherited from Kazv::BaseJob
static Get GET {}
 
static Post POST {}
 
static Put PUT {}
 
static Delete DELETE {}
 
- Protected Member Functions inherited from Kazv::BaseJob
void attachData (JsonWrap data)
 

Detailed Description

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 username\s which do 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.

Constructor & Destructor Documentation

◆ RegisterJob()

Kazv::Api::RegisterJob::RegisterJob ( std::string  serverUrl,
std::string  kind = std::string("user"),
std::optional< AuthenticationData auth = std::nullopt,
std::optional< std::string >  username = std::nullopt,
std::optional< std::string >  password = std::nullopt,
std::optional< std::string >  deviceId = std::nullopt,
std::optional< std::string >  initialDeviceDisplayName = std::nullopt,
std::optional< bool >  inhibitLogin = std::nullopt,
std::optional< bool >  refreshToken = std::nullopt 
)
explicit

Register for an account on this homeserver.

Parameters
kindThe kind of account to register. Defaults to user.
authAdditional 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.
usernameThe basis for the localpart of the desired Matrix ID. If omitted, the homeserver MUST generate a Matrix ID local part.
passwordThe desired password for the account.
deviceIdID 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.
initialDeviceDisplayNameA display name to assign to the newly-created device. Ignored if device_id corresponds to a known device.
inhibitLoginIf true, an access_token and device_id should not be returned from this call, therefore preventing an automatic login. Defaults to false.
refreshTokenIf true, the client supports refresh tokens.

Member Function Documentation

◆ buildBody()

BaseJob::Body Kazv::Api::RegisterJob::buildBody ( std::string  kind,
std::optional< AuthenticationData auth,
std::optional< std::string >  username,
std::optional< std::string >  password,
std::optional< std::string >  deviceId,
std::optional< std::string >  initialDeviceDisplayName,
std::optional< bool >  inhibitLogin,
std::optional< bool >  refreshToken 
)
static

◆ buildQuery()

BaseJob::Query Kazv::Api::RegisterJob::buildQuery ( std::string  kind)
static

◆ needsAuth()

static constexpr auto Kazv::Api::RegisterJob::needsAuth ( )
inlinestaticconstexpr

◆ withData() [1/2]

RegisterJob Kazv::Api::RegisterJob::withData ( JsonWrap  j) &&

◆ withData() [2/2]

RegisterJob Kazv::Api::RegisterJob::withData ( JsonWrap  j) const &

The documentation for this class was generated from the following files: