Skip to main content

agentlink_sdk/services/
user_service.rs

1//! User Service
2
3use std::sync::Arc;
4
5use crate::error::SdkResult;
6use crate::http::HttpClient;
7use crate::protocols::user::{
8    AddToBlacklistRequest, BlacklistEntry, UpdatePrivacySettingsRequest, User, UserPrivacySettings,
9};
10
11/// 用户服务
12pub struct UserService {
13    http: Arc<HttpClient>,
14}
15
16impl UserService {
17    /// 创建新的用户服务
18    pub fn new(http: Arc<HttpClient>) -> Self {
19        Self { http }
20    }
21
22    /// 获取当前用户信息(需要认证)
23    ///
24    /// # Returns
25    /// * `User` - 当前用户信息
26    pub async fn get_me(&self) -> SdkResult<User> {
27        self.http.get("/users/me").await
28    }
29
30    /// 搜索用户(需要认证)
31    ///
32    /// # Arguments
33    /// * `keyword` - 搜索关键词
34    ///
35    /// # Returns
36    /// * `Vec<User>` - 用户列表
37    pub async fn search_users(&self, keyword: &str) -> SdkResult<Vec<User>> {
38        let path = format!("/users/search?keyword={}", keyword);
39        self.http.get(&path).await
40    }
41
42    /// 获取用户隐私设置(需要认证)
43    ///
44    /// # Returns
45    /// * `UserPrivacySettings` - 隐私设置
46    pub async fn get_privacy_settings(&self) -> SdkResult<UserPrivacySettings> {
47        self.http.get("/users/privacy").await
48    }
49
50    /// 更新隐私设置(需要认证)
51    ///
52    /// # Arguments
53    /// * `settings` - 更新的设置
54    ///
55    /// # Returns
56    /// * `UserPrivacySettings` - 更新后的设置
57    pub async fn update_privacy_settings(
58        &self,
59        settings: &UpdatePrivacySettingsRequest,
60    ) -> SdkResult<UserPrivacySettings> {
61        self.http.put("/users/privacy", settings).await
62    }
63
64    /// 获取黑名单列表(需要认证)
65    ///
66    /// # Returns
67    /// * `Vec<BlacklistEntry>` - 黑名单列表
68    pub async fn get_blacklist(&self) -> SdkResult<Vec<BlacklistEntry>> {
69        self.http.get("/users/blacklist").await
70    }
71
72    /// 添加到黑名单(需要认证)
73    ///
74    /// # Arguments
75    /// * `blocked_user_id` - 要拉黑的用户 ID
76    /// * `reason` - 原因(可选)
77    ///
78    /// # Returns
79    /// * `BlacklistEntry` - 黑名单条目
80    pub async fn add_to_blacklist(
81        &self,
82        blocked_user_id: &str,
83        reason: Option<&str>,
84    ) -> SdkResult<BlacklistEntry> {
85        let request = AddToBlacklistRequest {
86            blocked_user_id: blocked_user_id.to_string(),
87            reason: reason.map(|s| s.to_string()),
88        };
89        self.http.post("/users/blacklist", &request).await
90    }
91
92    /// 从黑名单移除(需要认证)
93    ///
94    /// # Arguments
95    /// * `blocked_user_id` - 要移除的用户 ID
96    pub async fn remove_from_blacklist(&self, blocked_user_id: &str) -> SdkResult<()> {
97        let path = format!("/users/blacklist/{}", blocked_user_id);
98        self.http.delete(&path).await
99    }
100}