mirror of
https://github.com/matrix-construct/construct
synced 2024-05-29 08:13:46 +02:00
ircd:Ⓜ️:fetch: Support v1::event_auth operation with interface.
This commit is contained in:
parent
9b23b4d907
commit
a93f5a54d6
|
@ -59,6 +59,7 @@ enum class ircd::m::fetch::op
|
|||
{
|
||||
noop,
|
||||
event,
|
||||
auth,
|
||||
};
|
||||
|
||||
struct ircd::m::fetch::opts
|
||||
|
|
|
@ -26,6 +26,7 @@ namespace ircd::m::fetch
|
|||
static bool timedout(const request &, const system_point &now);
|
||||
static void _check_event(const request &, const m::event &);
|
||||
static void check_response__event(const request &, const json::object &);
|
||||
static void check_response__auth(const request &, const json::object &);
|
||||
static void check_response(const request &, const json::object &);
|
||||
static string_view select_origin(request &, const string_view &);
|
||||
static string_view select_random_origin(request &);
|
||||
|
@ -222,6 +223,7 @@ ircd::m::fetch::reflect(const op &op)
|
|||
{
|
||||
case op::noop: return "noop";
|
||||
case op::event: return "event";
|
||||
case op::auth: return "auth";
|
||||
}
|
||||
|
||||
return "?????";
|
||||
|
@ -446,6 +448,22 @@ try
|
|||
break;
|
||||
}
|
||||
|
||||
case op::auth:
|
||||
{
|
||||
v1::event_auth::opts opts;
|
||||
opts.remote = remote;
|
||||
opts.dynamic = true;
|
||||
request.future = std::make_unique<v1::event_auth>
|
||||
(
|
||||
request.opts.room_id,
|
||||
request.opts.event_id,
|
||||
request.buf,
|
||||
std::move(opts)
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case op::noop:
|
||||
break;
|
||||
}
|
||||
|
@ -714,6 +732,9 @@ ircd::m::fetch::check_response(const request &request,
|
|||
case op::event:
|
||||
return check_response__event(request, response);
|
||||
|
||||
case op::auth:
|
||||
return check_response__auth(request, response);
|
||||
|
||||
case op::noop:
|
||||
return;
|
||||
}
|
||||
|
@ -725,6 +746,27 @@ ircd::m::fetch::check_response(const request &request,
|
|||
};
|
||||
}
|
||||
|
||||
void
|
||||
ircd::m::fetch::check_response__auth(const request &request,
|
||||
const json::object &response)
|
||||
{
|
||||
const json::array &auth_chain
|
||||
{
|
||||
response.at("auth_chain")
|
||||
};
|
||||
|
||||
for(const json::object &auth_event : auth_chain)
|
||||
{
|
||||
event::id::buf event_id;
|
||||
const m::event event
|
||||
{
|
||||
event_id, auth_event
|
||||
};
|
||||
|
||||
_check_event(request, event);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ircd::m::fetch::check_response__event(const request &request,
|
||||
const json::object &response)
|
||||
|
|
Loading…
Reference in a new issue