tuwunel_api/client/admin/devices/
get_device.rs1use axum::extract::State;
2use synapse_admin_api::devices::get_device::v1 as get_device;
3use tuwunel_core::{Err, Result};
4
5use super::{device_response, require_local_user};
6use crate::{Ruma, client::admin::require_admin};
7
8pub(crate) async fn admin_get_device_route(
10 State(services): State<crate::State>,
11 body: Ruma<get_device::Request>,
12) -> Result<get_device::Response> {
13 require_admin(&services, body.sender_user()).await?;
14
15 let user_id = &body.user_id;
16 require_local_user(&services, user_id).await?;
17
18 let Ok(device) = services
19 .users
20 .get_device_metadata(user_id, &body.device_id)
21 .await
22 else {
23 return Err!(Request(NotFound("No device found")));
24 };
25
26 Ok(get_device::Response {
29 device: device_response(device, user_id, None),
30 })
31}