Can get the name of a room through the API
This commit is contained in:
@ -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
31
src/server/api/rooms.rs
Normal 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(),
|
||||
}))
|
||||
}
|
Reference in New Issue
Block a user