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

modules/client/directory/user: Modernize user directory query term interpretation.

This commit is contained in:
Jason Volk 2019-06-05 01:12:55 -07:00
parent 1a48bc3899
commit 9662d195cf

View file

@ -29,9 +29,9 @@ resource::response
post__search(client &client, post__search(client &client,
const resource::request &request) const resource::request &request)
{ {
const auto &search_term const json::string &search_term
{ {
unquote(request.at("search_term")) request.at("search_term")
}; };
const ushort &limit const ushort &limit
@ -39,23 +39,19 @@ post__search(client &client,
request.get<ushort>("limit", 10) request.get<ushort>("limit", 10)
}; };
m::room::state users
{
m::user::users
};
// Search term in this endpoint comes in as-is from Riot. Our query // Search term in this endpoint comes in as-is from Riot. Our query
// is a lower_bound of a user_id, so we have to prefix the '@'. // is a lower_bound of a user_id, so we have to prefix the '@'.
char qbuf[256] {'@'}; char qbuf[256] {'@', '\0'};
const string_view &query const string_view &query
{ {
!startswith(search_term, '@')? !startswith(search_term, '@')?
string_view{qbuf, strlcpy(qbuf+1, search_term, sizeof(qbuf))}: string_view{strlcat{qbuf, search_term}}:
search_term string_view{search_term}
}; };
bool limited{true}; bool limited{true};
std::vector<json::value> results; std::vector<json::value> results;
const m::room::state &users{m::user::users};
users.for_each("ircd.user", query, [&results, &limit, &limited] users.for_each("ircd.user", query, [&results, &limit, &limited]
(const m::event &event) (const m::event &event)
{ {