mirror of
https://github.com/matrix-construct/construct
synced 2024-09-29 04:08:54 +02:00
modules/publicrooms: Checkin the argument parsing half of this stub.
This commit is contained in:
parent
9a9420aed7
commit
6dfe99e8e2
1 changed files with 80 additions and 9 deletions
|
@ -16,15 +16,6 @@ IRCD_MODULE
|
||||||
"Client 7.5 :Public Rooms"
|
"Client 7.5 :Public Rooms"
|
||||||
};
|
};
|
||||||
|
|
||||||
resource
|
|
||||||
publicrooms_resource
|
|
||||||
{
|
|
||||||
"/_matrix/client/r0/publicRooms",
|
|
||||||
{
|
|
||||||
"(7.5) Lists the public rooms on the server. "
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const ircd::m::room::id::buf
|
const ircd::m::room::id::buf
|
||||||
public_room_id
|
public_room_id
|
||||||
{
|
{
|
||||||
|
@ -36,10 +27,48 @@ m::room public_
|
||||||
public_room_id
|
public_room_id
|
||||||
};
|
};
|
||||||
|
|
||||||
|
resource
|
||||||
|
publicrooms_resource
|
||||||
|
{
|
||||||
|
"/_matrix/client/r0/publicRooms",
|
||||||
|
{
|
||||||
|
"(7.5) Lists the public rooms on the server. "
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static resource::response
|
||||||
|
post__publicrooms_since(client &client,
|
||||||
|
const resource::request &request,
|
||||||
|
const string_view &since);
|
||||||
|
|
||||||
|
static resource::response
|
||||||
|
post__publicrooms_remote(client &client,
|
||||||
|
const resource::request &request,
|
||||||
|
const string_view &server,
|
||||||
|
const string_view &search,
|
||||||
|
const size_t &limit);
|
||||||
|
|
||||||
resource::response
|
resource::response
|
||||||
get__publicrooms(client &client,
|
get__publicrooms(client &client,
|
||||||
const resource::request &request)
|
const resource::request &request)
|
||||||
{
|
{
|
||||||
|
const auto &server
|
||||||
|
{
|
||||||
|
request.query["server"]
|
||||||
|
};
|
||||||
|
|
||||||
|
const auto &since
|
||||||
|
{
|
||||||
|
request.query["since"]
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t limit
|
||||||
|
{
|
||||||
|
request.query["limit"]?
|
||||||
|
uint8_t(lex_cast<ushort>(request.query["limit"])):
|
||||||
|
uint8_t(16U)
|
||||||
|
};
|
||||||
|
|
||||||
std::vector<json::value> chunk;
|
std::vector<json::value> chunk;
|
||||||
const string_view next_batch;
|
const string_view next_batch;
|
||||||
const string_view prev_batch;
|
const string_view prev_batch;
|
||||||
|
@ -57,10 +86,52 @@ get__publicrooms(client &client,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource::method
|
||||||
|
get_method
|
||||||
|
{
|
||||||
|
publicrooms_resource, "GET", get__publicrooms
|
||||||
|
};
|
||||||
|
|
||||||
resource::response
|
resource::response
|
||||||
post__publicrooms(client &client,
|
post__publicrooms(client &client,
|
||||||
const resource::request &request)
|
const resource::request &request)
|
||||||
{
|
{
|
||||||
|
const string_view &since
|
||||||
|
{
|
||||||
|
unquote(request["since"])
|
||||||
|
};
|
||||||
|
|
||||||
|
if(!empty(since))
|
||||||
|
return post__publicrooms_since(client, request, since);
|
||||||
|
|
||||||
|
const auto &server
|
||||||
|
{
|
||||||
|
request.query["server"]
|
||||||
|
};
|
||||||
|
|
||||||
|
const json::object &filter
|
||||||
|
{
|
||||||
|
request["filter"]
|
||||||
|
};
|
||||||
|
|
||||||
|
const string_view &search_term
|
||||||
|
{
|
||||||
|
unquote(filter["generic_search_term"])
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t limit
|
||||||
|
{
|
||||||
|
uint8_t(request.get<ushort>("limit", 16U))
|
||||||
|
};
|
||||||
|
|
||||||
|
const bool include_all_networks
|
||||||
|
{
|
||||||
|
request.get<bool>("include_all_networks", false)
|
||||||
|
};
|
||||||
|
|
||||||
|
if(server && server != my_host())
|
||||||
|
return post__publicrooms_remote(client, request, server, search_term, limit);
|
||||||
|
|
||||||
std::vector<json::value> chunk;
|
std::vector<json::value> chunk;
|
||||||
const string_view next_batch;
|
const string_view next_batch;
|
||||||
const string_view prev_batch;
|
const string_view prev_batch;
|
||||||
|
|
Loading…
Reference in a new issue