From 9457b1d34be2726bbf66a53e4005f9690801bf95 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Fri, 29 May 2020 00:52:02 -0700 Subject: [PATCH] modules/federation/publicrooms: Implement Federation r0.4.0-15.2 (matrix-org/matrix-doc/#2197). --- modules/federation/publicrooms.cc | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/modules/federation/publicrooms.cc b/modules/federation/publicrooms.cc index 0db502b23..b4a874fec 100644 --- a/modules/federation/publicrooms.cc +++ b/modules/federation/publicrooms.cc @@ -47,14 +47,25 @@ get_method } }; +m::resource::method +post_method +{ + publicrooms_resource, "POST", handle_get, + { + post_method.VERIFY_ORIGIN + } +}; + m::resource::response handle_get(client &client, const m::resource::request &request) { 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)) @@ -81,6 +92,16 @@ handle_get(client &client, request.get("include_all_networks", false) }; + const json::object &filter + { + request["filter"] + }; + + const json::string &search_term + { + filter["generic_search_term"] + }; + m::resource::response::chunked response { client, http::OK @@ -97,6 +118,7 @@ handle_get(client &client, opts.server = my_host(); opts.lower_bound = true; opts.room_id = since; + opts.search_term = search_term; size_t count{0}; m::room::id::buf prev_batch_buf;