origin_sdk/protocol/
friends.rs

1use 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}