1use crate::session::Session;
5use crate::error::Result;
6use serde::de::DeserializeOwned;
7use crate::message::element::{FriendMember, Group, GroupMember};
8
9impl Session {
10 async fn get_list<D>(&self, name: &'static str) -> Result<Vec<D>> where
11 D: DeserializeOwned {
12 let resp = self.client.get(&self.url(&format!("/{}List?sessionKey={}", name, self.key)))
13 .send().await?
14 .json().await?;
15
16 Ok(resp)
17 }
18
19 pub async fn friend_list(&self) -> Result<Vec<FriendMember>> {
20 self.get_list("friend").await
21 }
22
23 pub async fn group_list(&self) -> Result<Vec<Group>> {
24 self.get_list("group").await
25 }
26
27 pub async fn group_member_list(&self) -> Result<Vec<GroupMember>> {
28 self.get_list("member").await
29 }
30}