gewe_http/video_account/
follow.rs1use crate::client::GeweHttpClient;
2use gewe_core::{
3 FollowFinderRequest, FollowFinderResponse, FollowListData, FollowListRequest, GeweError,
4 SearchFollowRequest,
5};
6use tracing::instrument;
7
8impl GeweHttpClient {
9 #[instrument(skip(self))]
10 pub async fn follow_finder(
11 &self,
12 req: FollowFinderRequest<'_>,
13 ) -> Result<FollowFinderResponse, GeweError> {
14 let env = self
15 .post_api::<_, FollowFinderResponse>("gewe/v2/api/finder/follow", &req)
16 .await?;
17 env.data.ok_or(GeweError::MissingData)
18 }
19
20 #[instrument(skip(self))]
21 pub async fn follow_list(
22 &self,
23 req: FollowListRequest<'_>,
24 ) -> Result<FollowListData, GeweError> {
25 let env = self
26 .post_api::<_, FollowListData>("gewe/v2/api/finder/followList", &req)
27 .await?;
28 env.data.ok_or(GeweError::MissingData)
29 }
30
31 #[instrument(skip(self))]
32 pub async fn search_follow(&self, req: SearchFollowRequest<'_>) -> Result<(), GeweError> {
33 self.post_api::<_, serde_json::Value>("gewe/v2/api/finder/searchFollow", &req)
34 .await?;
35 Ok(())
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn test_follow_finder_request() {
45 let req = FollowFinderRequest {
46 app_id: "test_app",
47 my_user_name: "my_user",
48 my_role_type: 1,
49 to_user_name: "finder_user",
50 op_type: 1,
51 search_info: None,
52 };
53 let json = serde_json::to_string(&req).expect("Failed to serialize");
54 assert!(json.contains("appId"));
55 assert!(json.contains("myUserName"));
56 assert!(json.contains("toUserName"));
57 }
58
59 #[test]
60 fn test_follow_list_request() {
61 let req = FollowListRequest {
62 app_id: "test_app",
63 my_user_name: "my_user",
64 my_role_type: 1,
65 last_buffer: None,
66 };
67 let json = serde_json::to_string(&req).expect("Failed to serialize");
68 assert!(json.contains("appId"));
69 assert!(json.contains("myUserName"));
70 }
71
72 #[test]
73 fn test_search_follow_request() {
74 let req = SearchFollowRequest {
75 app_id: "test_app",
76 my_user_name: "my_user",
77 my_role_type: 1,
78 to_user_name: "to_user",
79 keyword: "search_term",
80 };
81 let json = serde_json::to_string(&req).expect("Failed to serialize");
82 assert!(json.contains("appId"));
83 assert!(json.contains("keyword"));
84 }
85}