libkazv
Kazv::Api::InviteBy3PIDJob Class Reference

Invite a user to participate in a particular room. More...

#include <third_party_membership.hpp>

Inheritance diagram for Kazv::Api::InviteBy3PIDJob:
Collaboration diagram for Kazv::Api::InviteBy3PIDJob:

Classes

class  JobResponse
 

Public Member Functions

 InviteBy3PIDJob (std::string serverUrl, std::string _accessToken, std::string roomId, std::string idServer, std::string idAccessToken, std::string medium, std::string address)
 Invite a user to participate in a particular room. More...
 
InviteBy3PIDJob withData (JsonWrap j) &&
 
InviteBy3PIDJob 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 ()
 
static BaseJob::Body buildBody (std::string roomId, std::string idServer, std::string idAccessToken, std::string medium, std::string address)
 
- 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

Invite a user to participate in a particular room.

Note that there are two forms of this API, which are documented separately. This version of the API does not require that the inviter know the Matrix identifier of the invitee, and instead relies on third party identifiers. The homeserver uses an identity server to perform the mapping from third party identifier to a Matrix identifier. The other is documented in the joining rooms section.

This API invites a user to participate in a particular room. They do not start participating in the room until they actually join the room.

Only users currently in a particular room can invite other users to join that room.

If the identity server did know the Matrix user identifier for the third party identifier, the homeserver will append a m.room.member event to the room.

If the identity server does not know a Matrix user identifier for the passed third party identifier, the homeserver will issue an invitation which can be accepted upon providing proof of ownership of the third party identifier. This is achieved by the identity server generating a token, which it gives to the inviting homeserver. The homeserver will add an m.room.third_party_invite event into the graph for the room, containing that token.

When the invitee binds the invited third party identifier to a Matrix user ID, the identity server will give the user a list of pending invitations, each containing:

  • The room ID to which they were invited
  • The token given to the homeserver
  • A signature of the token, signed with the identity server's private key
  • The matrix user ID who invited them to the room

If a token is requested from the identity server, the homeserver will append a m.room.third_party_invite event to the room.

Constructor & Destructor Documentation

◆ InviteBy3PIDJob()

Kazv::Api::InviteBy3PIDJob::InviteBy3PIDJob ( std::string  serverUrl,
std::string  _accessToken,
std::string  roomId,
std::string  idServer,
std::string  idAccessToken,
std::string  medium,
std::string  address 
)
explicit

Invite a user to participate in a particular room.

Parameters
roomIdThe room identifier (not alias) to which to invite the user.
idServerThe hostname+port of the identity server which should be used for third party identifier lookups.
idAccessTokenAn access token previously registered with the identity server. Servers can treat this as optional to distinguish between r0.5-compatible clients and this specification version.
mediumThe kind of address being passed in the address field, for example email.
addressThe invitee's third party identifier.

Member Function Documentation

◆ buildBody()

BaseJob::Body Kazv::Api::InviteBy3PIDJob::buildBody ( std::string  roomId,
std::string  idServer,
std::string  idAccessToken,
std::string  medium,
std::string  address 
)
static

◆ buildQuery()

BaseJob::Query Kazv::Api::InviteBy3PIDJob::buildQuery ( )
static

◆ needsAuth()

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

◆ withData() [1/2]

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

◆ withData() [2/2]

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

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