1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub enum ContentState {
5 #[serde(rename = "UNKNOWN")]
6 Unknown,
7 #[serde(rename = "READY_TO_DOWNLOAD")]
8 ReadyToDownload,
9 #[serde(rename = "SERVER_QUEUED")]
10 ServerQueued,
11 #[serde(rename = "DOWNLOADING")]
12 Downloading,
13 #[serde(rename = "DOWNLOAD_PAUSED")]
14 DownloadPaused,
15 #[serde(rename = "READY_TO_ACTIVATE")]
16 ReadyToActivate,
17 #[serde(rename = "READY_TO_DECRYPT")]
18 ReadyToDecrypt,
19 #[serde(rename = "DECRYPTING")]
20 Decrypting,
21 #[serde(rename = "READY_TO_UNPACK")]
22 ReadyToUnpack,
23 #[serde(rename = "UNPACKING")]
24 Unpacking,
25 #[serde(rename = "READY_TO_INSTALL")]
26 ReadyToInstall,
27 #[serde(rename = "INSTALLING")]
28 Installing,
29 #[serde(rename = "READY_TO_PLAY")]
30 ReadyToPlay,
31 #[serde(rename = "READY_TO_USE")]
32 ReadyToUse,
33 #[serde(rename = "INSTALLED")]
34 Installed,
35 #[serde(rename = "WAITING_TO_DOWNLOAD")]
36 WaitingToDownload,
37 #[serde(rename = "WAITING_TO_DECRYPT")]
38 WaitingToDecrypt,
39 #[serde(rename = "DOWNLOAD_EXPIRED")]
40 DownloadExpired,
41 #[serde(rename = "DECRYPT_EXPIRED")]
42 DecryptExpired,
43 #[serde(rename = "INVALID_CONTENT")]
44 InvalidContent,
45 #[serde(rename = "PLAYING")]
46 Playing,
47 #[serde(rename = "FINALIZING_DOWNLOAD")]
48 FinalizingDownload,
49 #[serde(rename = "PREPARING_DOWNLOAD")]
50 PreparingDownload,
51 #[serde(rename = "UPDATING")]
52 Updating,
53 #[serde(rename = "VERIFYING")]
54 Verifying,
55 #[serde(rename = "READY_TO_UPDATE")]
56 ReadyToUpdate,
57 #[serde(rename = "UPDATE_PAUSED")]
58 UpdatePaused,
59 #[serde(rename = "DOWNLOAD_QUEUED")]
60 DownloadQueued,
61}
62
63#[derive(Debug, Serialize, Deserialize)]
64pub struct CoreContentUpdated {
65 #[serde(rename = "Game", default)]
66 pub games: Vec<Game>,
67}
68
69#[derive(Debug, Serialize, Deserialize)]
70pub struct Dlc {
71 #[serde(rename = "@Name")]
72 pub name: String,
73 #[serde(rename = "@Id")]
74 pub id: String,
75 #[serde(rename = "@Installed")]
76 pub installed: bool,
77}
78
79#[derive(Debug, Serialize, Deserialize)]
80pub struct Game {
81 #[serde(rename = "@contentID")]
82 pub content_id: String,
83 #[serde(rename = "@progressValue")]
84 pub progress_value: f32,
85 #[serde(rename = "@state")]
86 pub state: ContentState,
87 #[serde(rename = "@installedVersion")]
88 pub installed_version: String,
89 #[serde(rename = "@availableVersion")]
90 pub available_version: String,
91 #[serde(rename = "@displayName")]
92 pub display_name: String,
93}
94
95#[derive(Debug, Serialize, Deserialize)]
96pub enum GameInfo {
97 #[serde(rename = "UPTODATE")]
98 Uptodate,
99 #[serde(rename = "LANGUAGES")]
100 Languages,
101 #[serde(rename = "FREETRIAL")]
102 Freetrial,
103 #[serde(rename = "EXPIRATION")]
104 Expiration,
105 #[serde(rename = "EXPIRATION_DURATION")]
106 ExpirationDuration,
107 #[serde(rename = "INSTALLED_VERSION")]
108 InstalledVersion,
109 #[serde(rename = "INSTALLED_LANGUAGE")]
110 InstalledLanguage,
111 #[serde(rename = "AVAILABLE_VERSION")]
112 AvailableVersion,
113 #[serde(rename = "DISPLAY_NAME")]
114 DisplayName,
115 #[serde(rename = "FULLGAME_PURCHASED")]
116 FullgamePurchased,
117 #[serde(rename = "FULLGAME_IS_RELEASED")]
118 FullgameIsReleased,
119 #[serde(rename = "FULLGAME_RELEASE_DATE")]
120 FullgameReleaseDate,
121 #[serde(rename = "MAX_GROUP_SIZE")]
122 MaxGroupSize,
123 #[serde(rename = "ENTITLEMENT_SOURCE")]
124 EntitlementSource,
125}
126
127#[derive(Debug, Serialize, Deserialize)]
128pub struct GameMessageEvent {
129 #[serde(rename = "@GameId")]
130 pub game_id: String,
131 #[serde(rename = "@Message")]
132 pub message: String,
133}
134
135#[derive(Debug, Serialize, Deserialize)]
136pub struct GetAllGameInfo;
137
138#[derive(Debug, Serialize, Deserialize)]
139pub struct GetAllGameInfoResponse {
140 #[serde(rename = "@UpToDate")]
141 pub up_to_date: bool,
142 #[serde(rename = "@Languages")]
143 pub languages: String,
144 #[serde(rename = "@FreeTrial")]
145 pub free_trial: bool,
146 #[serde(rename = "@FullGamePurchased")]
147 pub full_game_purchased: bool,
148 #[serde(rename = "@FullGameReleased")]
149 pub full_game_released: bool,
150 #[serde(rename = "@FullGameReleaseDate")]
151 pub full_game_release_date: String,
152 #[serde(rename = "@Expiration")]
153 pub expiration: String,
154 #[serde(rename = "@SystemTime")]
155 pub system_time: String,
156 #[serde(rename = "@HasExpiration")]
157 pub has_expiration: bool,
158 #[serde(rename = "@InstalledVersion")]
159 pub installed_version: String,
160 #[serde(rename = "@InstalledLanguage")]
161 pub installed_language: String,
162 #[serde(rename = "@AvailableVersion")]
163 pub available_version: String,
164 #[serde(rename = "@DisplayName")]
165 pub display_name: String,
166 #[serde(rename = "@MaxGroupSize")]
167 pub max_group_size: i32,
168 #[serde(rename = "@EntitlementSource")]
169 pub entitlement_source: String,
170}
171
172#[derive(Debug, Serialize, Deserialize)]
173pub struct QueryContent {
174 #[serde(rename = "@UserId")]
175 pub user_id: u64,
176 #[serde(rename = "@MultiplayerId")]
177 pub multiplayer_id: String,
178 #[serde(rename = "@Content")]
179 pub content_type: i32,
180 #[serde(rename = "MasterTitleId", default)]
181 pub game_id: Vec<String>,
182}
183
184#[derive(Debug, Serialize, Deserialize)]
185pub struct QueryContentResponse {
186 #[serde(rename = "Game", default)]
187 pub content: Vec<Game>,
188}
189
190#[derive(Debug, Serialize, Deserialize)]
191pub struct RestartGame {
192 #[serde(rename = "@UserId")]
193 pub user_id: u64,
194 #[serde(rename = "@Options")]
195 pub options: RestartOptions,
196}
197
198#[derive(Debug, Serialize, Deserialize)]
199pub enum RestartOptions {
200 #[serde(rename = "NORMAL")]
201 Normal,
202 #[serde(rename = "FORCE_UPDATE_FOR_GAME")]
203 ForceUpdateForGame,
204}
205
206#[derive(Debug, Serialize, Deserialize)]
207pub struct SendGameMessage {
208 #[serde(rename = "@GameId")]
209 pub game_id: String,
210 #[serde(rename = "@Message")]
211 pub message: String,
212}
213
214#[derive(Debug, Serialize, Deserialize)]
215pub struct StartGame {
216 #[serde(rename = "@GameId")]
217 pub game_id: String,
218 #[serde(rename = "@MultiplayerId")]
219 pub multiplayer_id: String,
220 #[serde(rename = "@CommandLine")]
221 pub command_line: String,
222}