Skip to main content

origin_sdk/protocol/
friends.rs

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