libQuotient
A Qt library for building matrix clients
|
Get the child events for a given parent event, with a given relType
and eventType
.
More...
#include <relations.h>
Classes | |
struct | Response |
Public Member Functions | |
GetRelatingEventsWithRelTypeAndEventTypeJob (const QString &roomId, const QString &eventId, const QString &relType, const QString &eventType, const QString &from={}, const QString &to={}, std::optional< int > limit=std::nullopt, const QString &dir={}, std::optional< bool > recurse=std::nullopt) | |
QString | nextBatch () const |
QString | prevBatch () const |
std::optional< int > | recursionDepth () const |
RoomEvents | chunk () |
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 |
Static Public Member Functions | |
static QUrl | makeRequestUrl (const HomeserverData &hsData, const QString &roomId, const QString &eventId, const QString &relType, const QString &eventType, const QString &from={}, const QString &to={}, std::optional< int > limit=std::nullopt, const QString &dir={}, std::optional< bool > recurse=std::nullopt) |
Construct a URL without creating a full-fledged job object. More... | |
Static Public Member Functions inherited from Quotient::BaseJob | |
template<typename... StrTs> | |
static QByteArray | makePath (QByteArrayView base, StrTs &&... parts) |
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) |
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 |
Get the child events for a given parent event, with a given relType
and eventType
.
Retrieve all of the child events for a given parent event which relate to the parent using the given relType
and have the given eventType
.
Note that when paginating the from
token should be "after" the to
token in terms of topological ordering, because it is only possible to paginate "backwards" through events, starting at from
.
For example, passing a from
token from page 2 of the results, and a to
token from page 1, would return the empty set. The caller can use a from
token from page 1 and a to
token from page 2 to paginate over the same range, however.
Definition at line 272 of file relations.h.
|
explicit |
roomId | The ID of the room containing the parent event. |
eventId | The ID of the parent event whose child events are to be returned. |
relType | The relationship type to search for. |
eventType | The event type of child events to search for. |
Note that in encrypted rooms this will typically always be m.room.encrypted
regardless of the event type contained within the encrypted payload.
from | The pagination token to start returning results from. If not supplied, results start at the most recent topological event known to the server. |
Can be a next_batch
or prev_batch
token from a previous call, or a returned start
token from /messages
, or a next_batch
token from /sync
.
to | The pagination token to stop returning results at. If not supplied, results continue up to limit or until there are no more events. |
Like from
, this can be a previous token from a prior call to this endpoint or from /messages
or /sync
.
limit | The maximum number of results to return in a single chunk . The server can and should apply a maximum value to this parameter to avoid large responses. |
Similarly, the server should apply a default value when not supplied.
dir | Optional (default b ) direction to return events from. If this is set to f , events will be returned in chronological order starting at from . If it is set to b , events will be returned in reverse chronological order, again starting at from . |
recurse | Whether to additionally include events which only relate indirectly to the given event, i.e. events related to the given event via two or more direct relationships. |
If set to false
, only events which have a direct relation with the given event will be included.
If set to true
, events which have an indirect relation with the given event will be included additionally up to a certain depth level. Homeservers SHOULD traverse at least 3 levels of relationships. Implementations MAY perform more but MUST be careful to not infinitely recurse.
The default value is false
.
|
inline |
The child events of the requested event, ordered topologically most-recent first. The events returned will match the relType
and eventType
supplied in the URL.
Definition at line 367 of file relations.h.
|
static |
Construct a URL without creating a full-fledged job object.
This function can be used when a URL for GetRelatingEventsWithRelTypeAndEventTypeJob is necessary but the job itself isn't.
|
inline |
An opaque string representing a pagination token. The absence of this token means there are no more results to fetch and the client should stop paginating.
Definition at line 350 of file relations.h.
|
inline |
An opaque string representing a pagination token. The absence of this token means this is the start of the result set, i.e. this is the first batch/page.
Definition at line 354 of file relations.h.
|
inline |
If the recurse
parameter was supplied by the client, this response field is mandatory and gives the actual depth to which the server recursed. If the client did not specify the recurse
parameter, this field must be absent.
Definition at line 359 of file relations.h.