0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-09-26 18:38:52 +02:00

modules/federation/publicrooms: Implement Federation r0.4.0-15.2 (matrix-org/matrix-doc/#2197).

This commit is contained in:
Jason Volk 2020-05-29 00:52:02 -07:00
parent 0eb4401897
commit 9457b1d34b

View file

@ -47,14 +47,25 @@ get_method
} }
}; };
m::resource::method
post_method
{
publicrooms_resource, "POST", handle_get,
{
post_method.VERIFY_ORIGIN
}
};
m::resource::response m::resource::response
handle_get(client &client, handle_get(client &client,
const m::resource::request &request) const m::resource::request &request)
{ {
char sincebuf[m::room::id::buf::SIZE]; char sincebuf[m::room::id::buf::SIZE];
const string_view &since const json::string &since
{ {
url::decode(sincebuf, request.query["since"]) request.query["since"]?
url::decode(sincebuf, request.query["since"]):
request["since"]
}; };
if(since && !valid(m::id::ROOM, since)) if(since && !valid(m::id::ROOM, since))
@ -81,6 +92,16 @@ handle_get(client &client,
request.get<bool>("include_all_networks", false) request.get<bool>("include_all_networks", false)
}; };
const json::object &filter
{
request["filter"]
};
const json::string &search_term
{
filter["generic_search_term"]
};
m::resource::response::chunked response m::resource::response::chunked response
{ {
client, http::OK client, http::OK
@ -97,6 +118,7 @@ handle_get(client &client,
opts.server = my_host(); opts.server = my_host();
opts.lower_bound = true; opts.lower_bound = true;
opts.room_id = since; opts.room_id = since;
opts.search_term = search_term;
size_t count{0}; size_t count{0};
m::room::id::buf prev_batch_buf; m::room::id::buf prev_batch_buf;