Can get the name of a room through the API

This commit is contained in:
2025-02-26 20:47:32 +01:00
parent 53186d2e24
commit 4589b3b339
4 changed files with 36 additions and 1 deletions

View File

@ -3,6 +3,7 @@ use crate::server::HttpResult;
use actix_web::HttpResponse;
pub mod account;
pub mod rooms;
pub mod ws;
/// API Home route

31
src/server/api/rooms.rs Normal file
View File

@ -0,0 +1,31 @@
use crate::extractors::client_auth::APIClientAuth;
use crate::server::HttpResult;
use actix_web::{web, HttpResponse};
use ruma::api::client::state;
use ruma::events::StateEventType;
use ruma::OwnedRoomId;
#[derive(serde::Deserialize)]
pub struct RoomIDInPath {
room_id: OwnedRoomId,
}
#[derive(serde::Serialize)]
struct GetRoomNameResponse {
name: String,
}
/// Get room name
pub async fn name(auth: APIClientAuth, path: web::Path<RoomIDInPath>) -> HttpResult {
let res = auth
.send_request(state::get_state_events_for_key::v3::Request::new(
path.room_id.clone(),
StateEventType::RoomName,
String::default(),
))
.await?;
Ok(HttpResponse::Ok().json(GetRoomNameResponse {
name: res.content.get_field("name")?.unwrap_or("").to_string(),
}))
}