tuwunel_api/client/rendezvous/msc4388/
create.rs1use 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}