origin_sdk/protocol/
friends.rs1use serde::{Deserialize, Serialize};
2
3use crate::protocol::presence::Presence;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct Friend {
7 #[serde(rename = "@UserId")]
8 pub user_id: u64,
9 #[serde(rename = "@PersonaId")]
10 pub persona_id: u64,
11 #[serde(rename = "@Persona")]
12 pub persona: String,
13 #[serde(rename = "@AvatarId")]
14 pub avatar_id: String,
15 #[serde(rename = "@Group")]
16 pub group: String,
17 #[serde(rename = "@GroupId")]
18 pub group_id: String,
19 #[serde(rename = "@Presence")]
20 pub presence: Presence,
21 #[serde(rename = "@State")]
22 pub state: FriendState,
23 #[serde(rename = "@TitleId")]
24 pub title_id: String,
25 #[serde(rename = "@Title")]
26 pub title: String,
27 #[serde(rename = "@MultiplayerId")]
28 pub multiplayer_id: String,
29 #[serde(rename = "@RichPresence")]
30 pub rich_presence: String,
31 #[serde(rename = "@GamePresence")]
32 pub game_presence: String,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub enum FriendState {
37 #[serde(rename = "UNKNOWN")]
38 Unknown,
39 #[serde(rename = "NONE")]
40 None,
41 #[serde(rename = "MUTUAL")]
42 Mutual,
43 #[serde(rename = "INVITED")]
44 Invited,
45 #[serde(rename = "DECLINED")]
46 Declined,
47 #[serde(rename = "REQUEST")]
48 Request,
49}
50
51#[derive(Debug, Serialize, Deserialize)]
52pub struct FriendStatus {
53 #[serde(rename = "@FriendId")]
54 pub friend_id: u64,
55 #[serde(rename = "@State")]
56 pub state: FriendState,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct FriendsEvent {
61 #[serde(rename = "@value")]
62 pub value: i32,
63}
64
65#[derive(Debug, Serialize, Deserialize)]
66pub struct QueryAreFriends {
67 #[serde(rename = "@UserId")]
68 pub user_id: u64,
69 #[serde(rename = "Friends", default)]
70 pub friends: Vec<u64>,
71}
72
73#[derive(Debug, Serialize, Deserialize)]
74pub struct QueryAreFriendsResponse {
75 #[serde(rename = "FriendStatus", default)]
76 pub users: Vec<FriendStatus>,
77}
78
79#[derive(Debug, Serialize, Deserialize)]
80pub struct QueryFriends {
81 #[serde(rename = "@UserId")]
82 pub user_id: u64,
83}
84
85#[derive(Debug, Serialize, Deserialize)]
86pub struct QueryFriendsResponse {
87 #[serde(rename = "Friend", default)]
88 pub friends: Vec<Friend>,
89}
90
91#[derive(Debug, Serialize, Deserialize)]
92pub struct RemoveFriend {
93 #[serde(rename = "@UserId")]
94 pub user_id: u64,
95 #[serde(rename = "@UserToRemove")]
96 pub user_to_remove: u64,
97}
98
99#[derive(Debug, Serialize, Deserialize)]
100pub struct RequestFriend {
101 #[serde(rename = "@UserId")]
102 pub user_id: u64,
103 #[serde(rename = "@UserToAdd")]
104 pub user_to_add: u64,
105}