gewe_http/personal/
profile.rs1use crate::client::GeweHttpClient;
2use gewe_core::{
3 GetProfileRequest, GetProfileResponse, GetQrCodeRequest, GetQrCodeResponse, GeweError,
4 UpdateHeadImgRequest, UpdateProfileRequest,
5};
6use tracing::instrument;
7
8impl GeweHttpClient {
9 #[instrument(skip(self))]
10 pub async fn get_profile(
11 &self,
12 req: GetProfileRequest<'_>,
13 ) -> Result<GetProfileResponse, GeweError> {
14 let env = self
15 .post_api::<_, GetProfileResponse>("gewe/v2/api/personal/getProfile", &req)
16 .await?;
17 env.data.ok_or(GeweError::MissingData)
18 }
19
20 #[instrument(skip(self))]
21 pub async fn update_profile(&self, req: UpdateProfileRequest<'_>) -> Result<(), GeweError> {
22 let _ = self
23 .post_api::<_, ()>("gewe/v2/api/personal/updateProfile", &req)
24 .await?;
25 Ok(())
26 }
27
28 #[instrument(skip(self))]
29 pub async fn update_head_img(&self, req: UpdateHeadImgRequest<'_>) -> Result<(), GeweError> {
30 let _ = self
31 .post_api::<_, ()>("gewe/v2/api/personal/updateHeadImg", &req)
32 .await?;
33 Ok(())
34 }
35
36 #[instrument(skip(self))]
37 pub async fn get_qr_code(
38 &self,
39 req: GetQrCodeRequest<'_>,
40 ) -> Result<GetQrCodeResponse, GeweError> {
41 let env = self
42 .post_api::<_, GetQrCodeResponse>("gewe/v2/api/personal/getQrCode", &req)
43 .await?;
44 env.data.ok_or(GeweError::MissingData)
45 }
46}
47
48#[cfg(test)]
49mod tests {
50 use super::*;
51
52 #[test]
53 fn test_get_profile_request() {
54 let req = GetProfileRequest { app_id: "test_app" };
55 let json = serde_json::to_string(&req).expect("Failed to serialize");
56 assert!(json.contains("appId"));
57 }
58
59 #[test]
60 fn test_update_profile_request() {
61 let req = UpdateProfileRequest {
62 app_id: "test_app",
63 nick_name: Some("NewName"),
64 country: Some("China"),
65 province: Some("Beijing"),
66 city: Some("Beijing"),
67 sex: Some(1),
68 signature: Some("New signature"),
69 };
70 let json = serde_json::to_string(&req).expect("Failed to serialize");
71 assert!(json.contains("appId"));
72 assert!(json.contains("NewName"));
73 }
74
75 #[test]
76 fn test_update_head_img_request() {
77 let req = UpdateHeadImgRequest {
78 app_id: "test_app",
79 head_img_url: "https://example.com/avatar.jpg",
80 };
81 let json = serde_json::to_string(&req).expect("Failed to serialize");
82 assert!(json.contains("appId"));
83 assert!(json.contains("headImgUrl"));
84 }
85
86 #[test]
87 fn test_get_qr_code_request() {
88 let req = GetQrCodeRequest { app_id: "test_app" };
89 let json = serde_json::to_string(&req).expect("Failed to serialize");
90 assert!(json.contains("appId"));
91 }
92}