files_sdk/users/
user.rs

1use crate::{Result, client::FilesClient};
2use serde::{Deserialize, Serialize};
3use serde_json::json;
4
5#[derive(Debug, Serialize, Deserialize, Clone)]
6pub struct UserEntity {
7    #[serde(flatten)]
8    pub data: serde_json::Map<String, serde_json::Value>,
9}
10
11pub struct CurrentUserHandler {
12    client: FilesClient,
13}
14
15impl CurrentUserHandler {
16    pub fn new(client: FilesClient) -> Self {
17        Self { client }
18    }
19
20    pub async fn get_current(&self) -> Result<UserEntity> {
21        let response = self.client.get_raw("/user").await?;
22        Ok(serde_json::from_value(response)?)
23    }
24
25    pub async fn update(&self, params: serde_json::Value) -> Result<UserEntity> {
26        let response = self.client.patch_raw("/user", params).await?;
27        Ok(serde_json::from_value(response)?)
28    }
29
30    pub async fn unlock(&self, id: i64) -> Result<()> {
31        let endpoint = format!("/users/{}/unlock", id);
32        self.client.post_raw(&endpoint, json!({})).await?;
33        Ok(())
34    }
35
36    pub async fn resend_verification(&self, id: i64) -> Result<()> {
37        let endpoint = format!("/users/{}/resend_verification_email", id);
38        self.client.post_raw(&endpoint, json!({})).await?;
39        Ok(())
40    }
41
42    pub async fn get_2fa_status(&self, id: i64) -> Result<UserEntity> {
43        let endpoint = format!("/users/{}/2fa", id);
44        let response = self.client.get_raw(&endpoint).await?;
45        Ok(serde_json::from_value(response)?)
46    }
47
48    pub async fn update_2fa(&self, id: i64, params: serde_json::Value) -> Result<UserEntity> {
49        let endpoint = format!("/users/{}/2fa", id);
50        let response = self.client.patch_raw(&endpoint, params).await?;
51        Ok(serde_json::from_value(response)?)
52    }
53}