mirror of
https://github.com/matrix-construct/construct
synced 2024-05-29 08:13:46 +02:00
ircd:Ⓜ️:fed::user::keys::claim: Separate content creation functions from ctor.
ircd:Ⓜ️:fed::user::keys::query: Separate content creation functions from ctor.
This commit is contained in:
parent
de986d2272
commit
ed56ef680a
|
@ -23,7 +23,11 @@ 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>;
|
||||
using users_devices = const vector_view<const user_devices>;
|
||||
using users_devices_map = std::map<m::user::id, json::array>;
|
||||
|
||||
static json::object make_content(const mutable_buffer &, const users_devices &);
|
||||
static json::object make_content(const mutable_buffer &, const users_devices_map &);
|
||||
|
||||
explicit operator json::object() const
|
||||
{
|
||||
|
@ -36,11 +40,11 @@ struct ircd::m::v1::user::keys::query
|
|||
const mutable_buffer &,
|
||||
opts);
|
||||
|
||||
query(const user_devices_map &,
|
||||
query(const users_devices_map &,
|
||||
const mutable_buffer &,
|
||||
opts);
|
||||
|
||||
query(const vector_view<const user_devices> &,
|
||||
query(const users_devices &,
|
||||
const mutable_buffer &,
|
||||
opts);
|
||||
|
||||
|
@ -67,7 +71,11 @@ struct ircd::m::v1::user::keys::claim
|
|||
using device = std::pair<string_view, string_view>;
|
||||
using devices = vector_view<const device>;
|
||||
using user_devices = std::pair<m::user::id, devices>;
|
||||
using user_devices_map = std::map<m::user::id, json::object>;
|
||||
using users_devices = vector_view<const user_devices>;
|
||||
using users_devices_map = std::map<m::user::id, json::object>;
|
||||
|
||||
static json::object make_content(const mutable_buffer &, const users_devices &);
|
||||
static json::object make_content(const mutable_buffer &, const users_devices_map &);
|
||||
|
||||
explicit operator json::object() const
|
||||
{
|
||||
|
@ -80,11 +88,11 @@ struct ircd::m::v1::user::keys::claim
|
|||
const mutable_buffer &,
|
||||
opts);
|
||||
|
||||
claim(const user_devices_map &,
|
||||
claim(const users_devices_map &,
|
||||
const mutable_buffer &,
|
||||
opts);
|
||||
|
||||
claim(const vector_view<const user_devices> &,
|
||||
claim(const users_devices &,
|
||||
const mutable_buffer &,
|
||||
opts);
|
||||
|
||||
|
|
211
ircd/m_fed.cc
211
ircd/m_fed.cc
|
@ -905,35 +905,14 @@ ircd::m::v1::user::keys::query::query(const user_devices &v,
|
|||
{
|
||||
}
|
||||
|
||||
ircd::m::v1::user::keys::query::query(const vector_view<const user_devices> &v,
|
||||
ircd::m::v1::user::keys::query::query(const users_devices &v,
|
||||
const mutable_buffer &buf,
|
||||
opts opts)
|
||||
:query{[&v, &buf, &opts]
|
||||
{
|
||||
json::stack out{buf};
|
||||
{
|
||||
json::stack::object top{out};
|
||||
json::stack::object device_keys
|
||||
{
|
||||
top, "device_keys"
|
||||
};
|
||||
|
||||
for(const user_devices &ud : v)
|
||||
{
|
||||
json::stack::member user
|
||||
{
|
||||
device_keys, ud.first
|
||||
};
|
||||
|
||||
json::stack::array devices{user};
|
||||
for(const string_view &device_id : ud.second)
|
||||
devices.append(device_id);
|
||||
}
|
||||
}
|
||||
|
||||
const json::object &content
|
||||
{
|
||||
out.completed()
|
||||
make_content(buf, v)
|
||||
};
|
||||
|
||||
return query
|
||||
|
@ -944,29 +923,14 @@ 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,
|
||||
ircd::m::v1::user::keys::query::query(const users_devices_map &m,
|
||||
const mutable_buffer &buf,
|
||||
opts opts)
|
||||
:query{[&map, &buf, &opts]
|
||||
:query{[&m, &buf, &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()
|
||||
make_content(buf, m)
|
||||
};
|
||||
|
||||
return query
|
||||
|
@ -1018,6 +982,55 @@ ircd::m::v1::user::keys::query::query(const json::object &content,
|
|||
{
|
||||
}
|
||||
|
||||
ircd::json::object
|
||||
ircd::m::v1::user::keys::query::make_content(const mutable_buffer &buf,
|
||||
const users_devices &v)
|
||||
{
|
||||
json::stack out{buf};
|
||||
{
|
||||
json::stack::object top{out};
|
||||
json::stack::object device_keys
|
||||
{
|
||||
top, "device_keys"
|
||||
};
|
||||
|
||||
for(const auto &[user_id, devices] : v)
|
||||
{
|
||||
json::stack::array array
|
||||
{
|
||||
device_keys, user_id
|
||||
};
|
||||
|
||||
for(const auto &device_id : devices)
|
||||
array.append(device_id);
|
||||
}
|
||||
}
|
||||
|
||||
return out.completed();
|
||||
}
|
||||
|
||||
ircd::json::object
|
||||
ircd::m::v1::user::keys::query::make_content(const mutable_buffer &buf,
|
||||
const users_devices_map &m)
|
||||
{
|
||||
json::stack out{buf};
|
||||
{
|
||||
json::stack::object top{out};
|
||||
json::stack::object device_keys
|
||||
{
|
||||
top, "device_keys"
|
||||
};
|
||||
|
||||
for(const auto &[user_id, devices] : m)
|
||||
json::stack::member
|
||||
{
|
||||
device_keys, user_id, devices
|
||||
};
|
||||
}
|
||||
|
||||
return out.completed();
|
||||
}
|
||||
|
||||
//
|
||||
// claim
|
||||
//
|
||||
|
@ -1071,41 +1084,14 @@ ircd::m::v1::user::keys::claim::claim(const user_devices &ud,
|
|||
{
|
||||
}
|
||||
|
||||
ircd::m::v1::user::keys::claim::claim(const vector_view<const user_devices> &v,
|
||||
ircd::m::v1::user::keys::claim::claim(const users_devices &v,
|
||||
const mutable_buffer &buf,
|
||||
opts opts)
|
||||
:claim{[&v, &buf, &opts]
|
||||
{
|
||||
json::stack out{buf};
|
||||
{
|
||||
json::stack::object top{out};
|
||||
json::stack::object one_time_keys
|
||||
{
|
||||
top, "one_time_keys"
|
||||
};
|
||||
|
||||
for(const auto &ud : v)
|
||||
{
|
||||
json::stack::object user
|
||||
{
|
||||
one_time_keys, ud.first
|
||||
};
|
||||
|
||||
for(const auto &device : ud.second)
|
||||
{
|
||||
const auto &device_id(device.first);
|
||||
const auto &algorithm_name(device.second);
|
||||
json::stack::member
|
||||
{
|
||||
user, device_id, algorithm_name
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const json::object &content
|
||||
{
|
||||
out.completed()
|
||||
make_content(buf, v)
|
||||
};
|
||||
|
||||
return claim
|
||||
|
@ -1116,33 +1102,14 @@ ircd::m::v1::user::keys::claim::claim(const vector_view<const user_devices> &v,
|
|||
{
|
||||
}
|
||||
|
||||
ircd::m::v1::user::keys::claim::claim(const user_devices_map &map,
|
||||
ircd::m::v1::user::keys::claim::claim(const users_devices_map &m,
|
||||
const mutable_buffer &buf,
|
||||
opts opts)
|
||||
:claim{[&map, &buf, &opts]
|
||||
:claim{[&m, &buf, &opts]
|
||||
{
|
||||
json::stack out{buf};
|
||||
{
|
||||
json::stack::object top{out};
|
||||
json::stack::object one_time_keys
|
||||
{
|
||||
top, "one_time_keys"
|
||||
};
|
||||
|
||||
for(const auto &p : map)
|
||||
{
|
||||
const m::user::id &user_id(p.first);
|
||||
const json::object &devices(p.second);
|
||||
json::stack::member user
|
||||
{
|
||||
one_time_keys, user_id, devices
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const json::object &content
|
||||
{
|
||||
out.completed()
|
||||
make_content(buf, m)
|
||||
};
|
||||
|
||||
return claim
|
||||
|
@ -1194,6 +1161,66 @@ ircd::m::v1::user::keys::claim::claim(const json::object &content,
|
|||
{
|
||||
}
|
||||
|
||||
ircd::json::object
|
||||
ircd::m::v1::user::keys::claim::make_content(const mutable_buffer &buf,
|
||||
const users_devices &v)
|
||||
{
|
||||
json::stack out{buf};
|
||||
{
|
||||
json::stack::object top{out};
|
||||
json::stack::object one_time_keys
|
||||
{
|
||||
top, "one_time_keys"
|
||||
};
|
||||
|
||||
for(const auto &[user_id, devices] : v)
|
||||
{
|
||||
json::stack::object user
|
||||
{
|
||||
one_time_keys, user_id
|
||||
};
|
||||
|
||||
for(const auto &[device_id, algorithm_name] : devices)
|
||||
json::stack::member
|
||||
{
|
||||
user, device_id, algorithm_name
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return out.completed();
|
||||
}
|
||||
|
||||
ircd::json::object
|
||||
ircd::m::v1::user::keys::claim::make_content(const mutable_buffer &buf,
|
||||
const users_devices_map &v)
|
||||
{
|
||||
json::stack out{buf};
|
||||
{
|
||||
json::stack::object top{out};
|
||||
json::stack::object one_time_keys
|
||||
{
|
||||
top, "one_time_keys"
|
||||
};
|
||||
|
||||
for(const auto &[user_id, devices] : v)
|
||||
{
|
||||
json::stack::object user
|
||||
{
|
||||
one_time_keys, user_id
|
||||
};
|
||||
|
||||
for(const auto &[device_id, algorithm_name] : devices)
|
||||
json::stack::member
|
||||
{
|
||||
user, device_id, algorithm_name
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return out.completed();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// v1/user.h
|
||||
|
|
Loading…
Reference in a new issue