0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-10 14:08:56 +02:00

ircd:Ⓜ️:v1::user::keys::query: Add another convenient request composer.

This commit is contained in:
Jason Volk 2019-02-21 14:57:45 -08:00
parent d083d09e03
commit dd7e31806d
2 changed files with 35 additions and 0 deletions

View file

@ -23,6 +23,7 @@ struct ircd::m::v1::user::keys::query
using opts = v1::user::opts;
using devices = vector_view<const string_view>;
using user_devices = std::pair<m::user::id, devices>;
using user_devices_map = std::map<m::user::id, json::array>;
explicit operator json::object() const
{
@ -35,6 +36,10 @@ struct ircd::m::v1::user::keys::query
const mutable_buffer &,
opts);
query(const user_devices_map &,
const mutable_buffer &,
opts);
query(const vector_view<const user_devices> &,
const mutable_buffer &,
opts);

View file

@ -921,6 +921,36 @@ ircd::m::v1::user::keys::query::query(const vector_view<const user_devices> &v,
};
}
ircd::m::v1::user::keys::query::query(const user_devices_map &map,
const mutable_buffer &buf,
opts opts)
{
json::stack out{buf};
{
json::stack::object top{out};
json::stack::object device_keys
{
top, "device_keys"
};
for(const auto &p : map)
json::stack::member user
{
device_keys, p.first, p.second
};
}
const json::object &content
{
out.completed()
};
new (this) query
{
content, buf + size(string_view(content)), std::move(opts)
};
}
ircd::m::v1::user::keys::query::query(const json::object &content,
const mutable_buffer &buf,
opts opts)