agentlink_sdk/services/
user_service.rs1use std::sync::Arc;
4
5use crate::error::SdkResult;
6use crate::http::HttpClient;
7use crate::protocols::user::{
8 AddToBlacklistRequest, BlacklistEntry, UpdatePrivacySettingsRequest, User, UserPrivacySettings,
9};
10
11pub struct UserService {
13 http: Arc<HttpClient>,
14}
15
16impl UserService {
17 pub fn new(http: Arc<HttpClient>) -> Self {
19 Self { http }
20 }
21
22 pub async fn get_me(&self) -> SdkResult<User> {
27 self.http.get("/users/me").await
28 }
29
30 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 pub async fn get_privacy_settings(&self) -> SdkResult<UserPrivacySettings> {
47 self.http.get("/users/privacy").await
48 }
49
50 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 pub async fn get_blacklist(&self) -> SdkResult<Vec<BlacklistEntry>> {
69 self.http.get("/users/blacklist").await
70 }
71
72 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 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}