1use serde::Deserialize;
2
3use crate::Target;
4
5#[derive(Deserialize, Debug, Clone)]
6pub enum Permission {
7 #[serde(rename = "ADMINISTRATOR")]
8 Administrator,
9
10 #[serde(rename = "OWNER")]
11 Owner,
12
13 #[serde(rename = "MEMBER")]
14 Member,
15}
16
17#[derive(Debug, Clone, Deserialize)]
18pub struct GroupMember {
19 pub(crate) id: Target,
20 #[serde(rename = "memberName")]
21 pub(crate) member_name: String,
22 pub(crate) permission: Permission,
23 pub(crate) group: Group,
24}
25
26impl GroupMember {
27 pub fn id(&self) -> Target {
28 self.id
29 }
30
31 pub fn member_name(&self) -> String {
32 self.member_name.clone()
33 }
34
35 pub fn permission(&self) -> Permission {
36 self.permission.clone()
37 }
38
39 pub fn group(&self) -> Group {
40 self.group.clone()
41 }
42}
43
44#[derive(Debug, Clone, Deserialize)]
45pub struct FriendMember {
46 pub(crate) id: Target,
47 #[serde(rename = "nickname")]
48 pub(crate) nick_name: String,
49 pub(crate) remark: String,
50}
51
52impl FriendMember {
53 pub fn id(&self) -> Target {
54 self.id
55 }
56
57 pub fn nick_name(&self) -> String {
58 self.nick_name.clone()
59 }
60
61 pub fn remark(&self) -> String {
62 self.remark.clone()
63 }
64}
65
66#[derive(Debug, Clone, Deserialize)]
67pub struct Group {
68 pub(crate) id: Target,
69 pub(crate) name: String,
70 pub(crate) permission: Permission,
71}
72
73impl Group {
74 pub fn id(&self) -> Target {
75 self.id
76 }
77
78 pub fn name(&self) -> String {
79 self.name.clone()
80 }
81
82 pub fn permission(&self) -> Permission {
83 self.permission.clone()
84 }
85}