files_sdk/users/
user_sftp_client_uses.rs1use crate::{FilesClient, PaginationInfo, Result};
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct UserSftpClientUseEntity {
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub id: Option<i64>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub sftp_client: Option<String>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub created_at: Option<String>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub updated_at: Option<String>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub user_id: Option<i64>,
30}
31
32pub struct UserSftpClientUseHandler {
34 client: FilesClient,
35}
36
37impl UserSftpClientUseHandler {
38 pub fn new(client: FilesClient) -> Self {
47 Self { client }
48 }
49
50 pub async fn list(
69 &self,
70 user_id: Option<i64>,
71 cursor: Option<String>,
72 per_page: Option<i32>,
73 ) -> Result<(Vec<UserSftpClientUseEntity>, PaginationInfo)> {
74 let mut endpoint = "/user_sftp_client_uses".to_string();
75 let mut query_params = Vec::new();
76
77 if let Some(user_id) = user_id {
78 query_params.push(format!("user_id={}", user_id));
79 }
80
81 if let Some(cursor) = cursor {
82 query_params.push(format!("cursor={}", cursor));
83 }
84
85 if let Some(per_page) = per_page {
86 query_params.push(format!("per_page={}", per_page));
87 }
88
89 if !query_params.is_empty() {
90 endpoint.push('?');
91 endpoint.push_str(&query_params.join("&"));
92 }
93
94 let response = self.client.get_raw(&endpoint).await?;
95 let items: Vec<UserSftpClientUseEntity> = serde_json::from_value(response)?;
96
97 let pagination = PaginationInfo {
99 cursor_next: None,
100 cursor_prev: None,
101 };
102
103 Ok((items, pagination))
104 }
105}
106
107#[cfg(test)]
108mod tests {
109 use super::*;
110
111 #[test]
112 fn test_handler_creation() {
113 let client = FilesClient::builder()
114 .api_key("test-key")
115 .build()
116 .expect("Client build failed");
117 let _handler = UserSftpClientUseHandler::new(client);
118 }
119}