Skip to main content

tuwunel_api/client/rendezvous/msc4388/
create.rs

1use axum::extract::State;
2use bytes::Bytes;
3use ruma::api::client::rendezvous::create_rendezvous_session::unstable_msc4388::{
4	Request, Response,
5};
6
7use super::{Result, ensure_available, ensure_create_available, ensure_data_size};
8use crate::{ClientIp, Ruma};
9
10#[tracing::instrument(level = "debug", skip_all)]
11pub(crate) async fn create_msc4388_route(
12	State(services): State<crate::State>,
13	ClientIp(client): ClientIp,
14	body: Ruma<Request>,
15) -> Result<Response> {
16	ensure_available(&services, client)?;
17	ensure_create_available(&services, &body)?;
18	ensure_data_size(&services, &body.data)?;
19
20	let (id, meta) = services
21		.rendezvous
22		.create(Bytes::from(body.body.data));
23
24	Ok(Response {
25		id: id.as_str().to_owned(),
26		sequence_token: meta.sequence_token().to_owned(),
27		expires_in: meta.expires_in(),
28	})
29}