libQuotient
A Qt library for building matrix clients
|
Create a new room. More...
#include <create_room.h>
Classes | |
struct | Invite3pid |
struct | StateEvent |
Public Member Functions | |
CreateRoomJob (const QString &visibility={}, const QString &roomAliasName={}, const QString &name={}, const QString &topic={}, const QStringList &invite={}, const QVector< Invite3pid > &invite3pid={}, const QString &roomVersion={}, const QJsonObject &creationContent={}, const QVector< StateEvent > &initialState={}, const QString &preset={}, std::optional< bool > isDirect=std::nullopt, const QJsonObject &powerLevelContentOverride={}) | |
QString | roomId () const |
The created room's ID. More... | |
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 |
Create a new room.
Create a new room with various configuration options.
The server MUST apply the normal state resolution rules when creating the new room, including checking power levels for each event. It MUST apply the events implied by the request in the following order:
m.room.create
event itself. Must be the first event in the room.m.room.member
event for the creator to join the room. This is needed so the remaining events can be sent.m.room.power_levels
event, giving the room creator (and not other members) permission to send state events. Overridden by the power_level_content_override
parameter.m.room.canonical_alias
event if room_alias_name
is given.preset
. Currently these are the m.room.join_rules
, m.room.history_visibility
, and m.room.guest_access
state events.initial_state
, in the order that they are listed.name
and topic
(m.room.name
and m.room.topic
state events).invite
and invite_3pid
(m.room.member
with membership: invite
and m.room.third_party_invite
).The available presets do the following with respect to room state:
Preset | join_rules | history_visibility | guest_access | Other |
---|---|---|---|---|
private_chat | invite | shared | can_join | |
trusted_private_chat | invite | shared | can_join | All invitees |
are given the same power level as the room creator. | | public_chat
| public
| shared
| forbidden
| |
The server will create a m.room.create
event in the room with the requesting user as the creator, alongside other keys provided in the creation_content
.
Definition at line 53 of file create_room.h.
|
explicit |
visibility | A public visibility indicates that the room will be shown in the published room list. A private visibility will hide the room from the published room list. Rooms default to private visibility if this key is not included. NB: This should not be confused with join_rules which also uses the word public . |
roomAliasName | The desired room alias local part. If this is included, a room alias will be created and mapped to the newly created room. The alias will belong on the same homeserver which created the room. For example, if this was set to "foo" and sent to the homeserver "example.com" the complete room alias would be #foo:example.com . |
The complete room alias will become the canonical alias for the room and an m.room.canonical_alias
event will be sent into the room.
name | If this is included, an m.room.name event will be sent into the room to indicate the name of the room. See Room Events for more information on m.room.name . |
topic | If this is included, an m.room.topic event will be sent into the room to indicate the topic for the room. See Room Events for more information on m.room.topic . |
invite | A list of user IDs to invite to the room. This will tell the server to invite everyone in the list to the newly created room. |
invite3pid | A list of objects representing third-party IDs to invite into the room. |
roomVersion | The room version to set for the room. If not provided, the homeserver is to use its configured default. If provided, the homeserver will return a 400 error with the errcode M_UNSUPPORTED_ROOM_VERSION if it does not support the room version. |
creationContent | Extra keys, such as m.federate , to be added to the content of the m.room.create event. The server will overwrite the following keys: creator , room_version . Future versions of the specification may allow the server to overwrite other keys. |
initialState | A list of state events to set in the new room. This allows the user to override the default state events set in the new room. The expected format of the state events are an object with type, state_key and content keys set. |
Takes precedence over events set by preset
, but gets overridden by name
and topic
keys.
preset | Convenience parameter for setting various default state events based on a preset. |
If unspecified, the server should use the visibility
to determine which preset to use. A visibility of public
equates to a preset of public_chat
and private
visibility equates to a preset of private_chat
.
isDirect | This flag makes the server set the is_direct flag on the m.room.member events sent to the users in invite and invite_3pid . See Direct Messaging for more information. |
powerLevelContentOverride | The power level content to override in the default power level event. This object is applied on top of the generated m.room.power_levels event content prior to it being sent to the room. Defaults to overriding nothing. |
|
inline |
The created room's ID.
Definition at line 180 of file create_room.h.