Can get the list of joined rooms by user

This commit is contained in:
Pierre HUBERT 2025-02-27 20:47:57 +01:00
parent 95ca1f0ba6
commit ff43364df3
2 changed files with 18 additions and 1 deletions

View File

@ -57,6 +57,7 @@ async fn main() -> std::io::Result<()> {
.route("/api", web::get().to(api::api_home)) .route("/api", web::get().to(api::api_home))
.route("/api", web::post().to(api::api_home)) .route("/api", web::post().to(api::api_home))
.route("/api/account/whoami", web::get().to(api::account::who_am_i)) .route("/api/account/whoami", web::get().to(api::account::who_am_i))
.route("/api/room/joined", web::get().to(api::room::joined_rooms))
.route("/api/room/{room_id}", web::get().to(api::room::info)) .route("/api/room/{room_id}", web::get().to(api::room::info))
.route( .route(
"/api/media/{server_name}/{media_id}/download", "/api/media/{server_name}/{media_id}/download",

View File

@ -2,11 +2,27 @@ use crate::extractors::client_auth::APIClientAuth;
use crate::server::{HttpFailure, HttpResult}; use crate::server::{HttpFailure, HttpResult};
use crate::utils::matrix_utils::ApiMxcURI; use crate::utils::matrix_utils::ApiMxcURI;
use actix_web::{web, HttpResponse}; use actix_web::{web, HttpResponse};
use ruma::api::client::state; use ruma::api::client::{membership, state};
use ruma::events::StateEventType; use ruma::events::StateEventType;
use ruma::{OwnedMxcUri, OwnedRoomId}; use ruma::{OwnedMxcUri, OwnedRoomId};
use serde::de::DeserializeOwned; use serde::de::DeserializeOwned;
#[derive(serde::Serialize)]
struct GetRoomsMembershipsResponse {
rooms: Vec<OwnedRoomId>,
}
/// Get the list of rooms the user has joined
pub async fn joined_rooms(auth: APIClientAuth) -> HttpResult {
let res = auth
.send_request(membership::joined_rooms::v3::Request::default())
.await?;
Ok(HttpResponse::Ok().json(GetRoomsMembershipsResponse {
rooms: res.joined_rooms,
}))
}
#[derive(serde::Deserialize)] #[derive(serde::Deserialize)]
pub struct RoomIDInPath { pub struct RoomIDInPath {
room_id: OwnedRoomId, room_id: OwnedRoomId,