libkazv
Kazv::Api::KnockRoomJob Class Reference

Knock on a room, requesting permission to join. More...

#include <knocking.hpp>

Inheritance diagram for Kazv::Api::KnockRoomJob:
Collaboration diagram for Kazv::Api::KnockRoomJob:

Classes

class  JobResponse
 

Public Member Functions

 KnockRoomJob (std::string serverUrl, std::string _accessToken, std::string roomIdOrAlias, immer::array< std::string > serverName={}, std::optional< std::string > reason=std::nullopt)
 Knock on a room, requesting permission to join. More...
 
KnockRoomJob withData (JsonWrap j) &&
 
KnockRoomJob 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 (immer::array< std::string > serverName)
 
static BaseJob::Body buildBody (std::string roomIdOrAlias, immer::array< std::string > serverName, std::optional< std::string > reason)
 
- 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

Knock on a room, requesting permission to join.

Note that this API takes either a room ID or alias, unlike other membership APIs.

This API "knocks" on the room to ask for permission to join, if the user is allowed to knock on the room. Acceptance of the knock happens out of band from this API, meaning that the client will have to watch for updates regarding the acceptance/rejection of the knock.

If the room history settings allow, the user will still be able to see history of the room while being in the "knock" state. The user will have to accept the invitation to join the room (acceptance of knock) to see messages reliably. See the /join endpoints for more information about history visibility to the user.

The knock will appear as an entry in the response of the /sync API.

Constructor & Destructor Documentation

◆ KnockRoomJob()

Kazv::Api::KnockRoomJob::KnockRoomJob ( std::string  serverUrl,
std::string  _accessToken,
std::string  roomIdOrAlias,
immer::array< std::string >  serverName = {},
std::optional< std::string >  reason = std::nullopt 
)
explicit

Knock on a room, requesting permission to join.

Parameters
roomIdOrAliasThe room identifier or alias to knock upon.
serverNameThe servers to attempt to knock on the room through. One of the servers must be participating in the room.
reasonOptional reason to be included as the reason on the subsequent membership event.

Member Function Documentation

◆ buildBody()

BaseJob::Body Kazv::Api::KnockRoomJob::buildBody ( std::string  roomIdOrAlias,
immer::array< std::string >  serverName,
std::optional< std::string >  reason 
)
static

◆ buildQuery()

BaseJob::Query Kazv::Api::KnockRoomJob::buildQuery ( immer::array< std::string >  serverName)
static

◆ needsAuth()

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

◆ withData() [1/2]

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

◆ withData() [2/2]

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

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