gewe_http/video_account/
follow.rs

1use 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}