0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-07-02 16:58:19 +02:00

modules/client/profile: Various cleanup; use profile suite; urldecode key params.

This commit is contained in:
Jason Volk 2018-03-22 16:27:42 -07:00
parent 2116cf6254
commit 7bfd050131

View file

@ -38,14 +38,14 @@ profile_set(const m::user &user,
const string_view &value); const string_view &value);
static resource::response static resource::response
get__profile_full(client &client, get__profile_full(client &,
const resource::request &request, const resource::request &,
const m::room &user_room); const m::user &);
static resource::response static resource::response
get__profile_remote(client &client, get__profile_remote(client &,
const resource::request &request, const resource::request &,
const m::user &user); const m::user &);
resource::response resource::response
get__profile(client &client, get__profile(client &client,
@ -67,35 +67,21 @@ get__profile(client &client,
user_id user_id
}; };
const m::room::id::buf user_room_id if(!my(user) && !exists(user))
{
user.room_id()
};
if(!my(user) && !exists(user_room_id))
return get__profile_remote(client, request, user); return get__profile_remote(client, request, user);
const m::room user_room
{
user_room_id
};
if(request.parv.size() < 2) if(request.parv.size() < 2)
return get__profile_full(client, request, user_room); return get__profile_full(client, request, user);
char parambuf[128];
const string_view &param const string_view &param
{ {
request.parv[1] url::decode(request.parv[1], parambuf)
}; };
user_room.get("ircd.profile", param, [&client, &param] profile_get(user, param, [&param, &client]
(const m::event &event) (const string_view &value)
{ {
const string_view &value
{
at<"content"_>(event).at("text")
};
resource::response resource::response
{ {
client, json::members client, json::members
@ -117,12 +103,10 @@ method_get
resource::response resource::response
get__profile_full(client &client, get__profile_full(client &client,
const resource::request &request, const resource::request &request,
const m::room &user_room) const m::user &user)
{ {
const m::room::state state const m::user::room user_room{user};
{ const m::room::state state{user_room};
user_room
};
std::vector<json::member> members; std::vector<json::member> members;
state.for_each("ircd.profile", [&members] state.for_each("ircd.profile", [&members]
@ -162,9 +146,10 @@ get__profile_remote(client &client,
{ {
//TODO: XXX cache strat user's room //TODO: XXX cache strat user's room
const string_view &field char parambuf[128];
const string_view &param
{ {
request.parv[1] url::decode(request.parv[1], parambuf)
}; };
const unique_buffer<mutable_buffer> buf const unique_buffer<mutable_buffer> buf
@ -174,7 +159,7 @@ get__profile_remote(client &client,
m::v1::query::profile federation_request m::v1::query::profile federation_request
{ {
user.user_id, field, buf user.user_id, param, buf
}; };
//TODO: conf //TODO: conf
@ -236,19 +221,10 @@ put__profile(client &client,
user_id user_id
}; };
const m::room::id::buf user_room_id char parambuf[128];
{
user.room_id()
};
const m::room user_room
{
user_room_id
};
const string_view &param const string_view &param
{ {
request.parv[1] url::decode(request.parv[1], parambuf)
}; };
const string_view &value const string_view &value
@ -256,10 +232,15 @@ put__profile(client &client,
unquote(request.at(param)) unquote(request.at(param))
}; };
send(user_room, request.user_id, "ircd.profile", param, const m::user::id &sender
{ {
{ "text", value } request.user_id
}); };
const auto eid
{
profile_set(user, sender, param, value)
};
return resource::response return resource::response
{ {