tuwunel_admin/query/oauth/
list_sessions.rs1use futures::{StreamExt, TryStreamExt};
2use ruma::OwnedUserId;
3use tuwunel_core::{Result, utils::stream::ReadyExt};
4
5use crate::admin_command;
6
7#[admin_command]
8pub(super) async fn oauth_list_sessions(&self, user_id: Option<OwnedUserId>) -> Result {
9 if let Some(user_id) = user_id.as_deref() {
10 return self
11 .services
12 .oauth
13 .sessions
14 .get_sess_id_by_user(user_id)
15 .map_ok(|id| format!("{id}\n"))
16 .try_for_each(async |id: String| self.write_str(&id).await)
17 .await;
18 }
19
20 self.services
21 .oauth
22 .sessions
23 .stream()
24 .ready_filter_map(|sess| sess.sess_id)
25 .map(|sess_id| format!("{sess_id:?}\n"))
26 .for_each(async |id: String| {
27 self.write_str(&id).await.ok();
28 })
29 .await;
30
31 Ok(())
32}