egs_api/api/types/
cosmos.rs1use serde::{Deserialize, Serialize};
2
3#[allow(missing_docs)]
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct CosmosAuthResponse {
12 pub bearer_token_valid: bool,
13 pub cleared_offline: bool,
14 pub upgraded_bearer_token: bool,
15 pub account_id: String,
16}
17
18#[allow(missing_docs)]
23#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
24#[serde(rename_all = "camelCase")]
25pub struct CosmosAuthError {
26 pub error: String,
27 pub is_logged_in: bool,
28}
29
30#[allow(missing_docs)]
32#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
33#[serde(rename_all = "camelCase")]
34pub struct CosmosAccount {
35 pub country: String,
36 pub display_name: String,
37 pub email: String,
38 pub id: String,
39 pub preferred_language: String,
40 pub cabined_mode: bool,
41 pub is_logged_in: bool,
42}
43
44#[allow(missing_docs)]
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
50#[serde(rename_all = "camelCase")]
51pub struct CosmosEulaResponse {
52 pub accepted: bool,
53}
54
55#[allow(missing_docs)]
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
58#[serde(rename_all = "camelCase")]
59pub struct CosmosPolicyAodc {
60 pub failed: bool,
61}
62
63#[allow(missing_docs)]
65#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
66#[serde(rename_all = "camelCase")]
67pub struct CosmosCommOptIn {
68 pub setting_value: bool,
69}
70
71#[cfg(test)]
72mod tests {
73 use super::*;
74
75 #[test]
76 fn deserialize_cosmos_auth() {
77 let json = r#"{"bearerTokenValid":true,"clearedOffline":false,"upgradedBearerToken":true,"accountId":"8645b4947bbc4c0092a8b7236df169d1"}"#;
78 let auth: CosmosAuthResponse = serde_json::from_str(json).unwrap();
79 assert!(auth.bearer_token_valid);
80 assert!(auth.upgraded_bearer_token);
81 assert_eq!(auth.account_id, "8645b4947bbc4c0092a8b7236df169d1");
82 }
83
84 #[test]
85 fn deserialize_cosmos_auth_error() {
86 let json = r#"{"error":"Not logged in","isLoggedIn":false}"#;
87 let err: CosmosAuthError = serde_json::from_str(json).unwrap();
88 assert_eq!(err.error, "Not logged in");
89 assert!(!err.is_logged_in);
90 }
91
92 #[test]
93 fn deserialize_cosmos_eula() {
94 let json = r#"{"accepted":true}"#;
95 let eula: CosmosEulaResponse = serde_json::from_str(json).unwrap();
96 assert!(eula.accepted);
97 }
98
99 #[test]
100 fn deserialize_cosmos_account() {
101 let json = r#"{"country":"CZ","displayName":"Acheta Games","email":"m***n@stastnej.ch","id":"8645b4947bbc4c0092a8b7236df169d1","preferredLanguage":"en","cabinedMode":false,"isLoggedIn":true}"#;
102 let account: CosmosAccount = serde_json::from_str(json).unwrap();
103 assert_eq!(account.country, "CZ");
104 assert_eq!(account.display_name, "Acheta Games");
105 assert!(account.is_logged_in);
106 }
107
108 #[test]
109 fn deserialize_policy_aodc() {
110 let json = r#"{"failed":false}"#;
111 let policy: CosmosPolicyAodc = serde_json::from_str(json).unwrap();
112 assert!(!policy.failed);
113 }
114
115 #[test]
116 fn deserialize_comm_opt_in() {
117 let json = r#"{"settingValue":false}"#;
118 let opt: CosmosCommOptIn = serde_json::from_str(json).unwrap();
119 assert!(!opt.setting_value);
120 }
121}