mirror of
https://github.com/matrix-construct/construct
synced 2024-09-26 18:38:52 +02:00
modules/client/join: Convey available server_name data to join system.
This commit is contained in:
parent
83e1bcd17b
commit
b471713582
1 changed files with 34 additions and 9 deletions
|
@ -29,12 +29,14 @@ join_resource
|
|||
static m::resource::response
|
||||
_post__join(client &client,
|
||||
const m::resource::request &request,
|
||||
const m::room::id &room_id);
|
||||
const m::room::id &room_id,
|
||||
const vector_view<const string_view> &server_names);
|
||||
|
||||
static m::resource::response
|
||||
_post__join(client &client,
|
||||
const m::resource::request &request,
|
||||
const m::room::alias &room_alias);
|
||||
const m::room::alias &room_alias,
|
||||
const vector_view<const string_view> &server_names);
|
||||
|
||||
m::resource::response
|
||||
post__join(client &client,
|
||||
|
@ -52,17 +54,35 @@ post__join(client &client,
|
|||
url::decode(idbuf, request.parv[0])
|
||||
};
|
||||
|
||||
static const size_t server_name_maxarg{16U};
|
||||
const auto server_name_count
|
||||
{
|
||||
std::min(request.query.count("server_name"), server_name_maxarg)
|
||||
};
|
||||
|
||||
string_view server_name[server_name_maxarg];
|
||||
const unique_mutable_buffer server_name_buf
|
||||
{
|
||||
rfc3986::DOMAIN_BUFSIZE * server_name_count
|
||||
};
|
||||
|
||||
const auto server_names
|
||||
{
|
||||
request.query.array(server_name_buf, "server_name", server_name)
|
||||
};
|
||||
|
||||
switch(m::sigil(id))
|
||||
{
|
||||
case m::id::ROOM:
|
||||
return _post__join(client, request, m::room::id{id});
|
||||
return _post__join(client, request, m::room::id{id}, server_names);
|
||||
|
||||
case m::id::ROOM_ALIAS:
|
||||
return _post__join(client, request, m::room::alias{id});
|
||||
return _post__join(client, request, m::room::alias{id}, server_names);
|
||||
|
||||
default: throw m::UNSUPPORTED
|
||||
{
|
||||
"Cannot join a room using a '%s' MXID", reflect(m::sigil(id))
|
||||
"Cannot join a room using a '%s' MXID",
|
||||
reflect(m::sigil(id))
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -79,9 +99,13 @@ method_post
|
|||
static m::resource::response
|
||||
_post__join(client &client,
|
||||
const m::resource::request &request,
|
||||
const m::room::alias &room_alias)
|
||||
const m::room::alias &room_alias,
|
||||
const vector_view<const string_view> &server_names)
|
||||
{
|
||||
m::join(room_alias, request.user_id);
|
||||
const auto event_id
|
||||
{
|
||||
m::join(room_alias, request.user_id)
|
||||
};
|
||||
|
||||
return m::resource::response
|
||||
{
|
||||
|
@ -98,7 +122,8 @@ _post__join(client &client,
|
|||
static m::resource::response
|
||||
_post__join(client &client,
|
||||
const m::resource::request &request,
|
||||
const m::room::id &room_id)
|
||||
const m::room::id &room_id,
|
||||
const vector_view<const string_view> &server_names)
|
||||
{
|
||||
const m::room room
|
||||
{
|
||||
|
@ -107,7 +132,7 @@ _post__join(client &client,
|
|||
|
||||
const auto event_id
|
||||
{
|
||||
m::join(room, request.user_id)
|
||||
m::join(room, request.user_id, server_names)
|
||||
};
|
||||
|
||||
return m::resource::response
|
||||
|
|
Loading…
Reference in a new issue