use chrono::{DateTime, Utc}; use multimap::MultiMap; use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Debug, Serialize, Deserialize)] pub struct Property { pub value: String, pub signature: Option } #[derive(Debug, Serialize, Deserialize)] pub struct UserProfile { pub uuid: Option, pub name: Option, #[serde(default, skip_serializing_if = "MultiMap::is_empty")] pub properties: MultiMap } #[derive(Debug, Serialize, Deserialize)] pub(super) struct Token { pub value: String, #[serde(skip_serializing_if = "Option::is_none")] pub expire: Option> } #[derive(Debug, Serialize, Deserialize)] pub struct MsaUser { #[serde(skip_serializing_if = "Option::is_none")] pub profile: Option, pub xuid: Uuid, pub(super) auth_token: Option, pub(super) xbl_token: Option, pub(super) refresh_token: Option } #[derive(Debug, Serialize, Deserialize)] #[serde(tag = "type")] pub enum User { Dummy(UserProfile), MSA(MsaUser) } #[derive(Debug, Serialize, Deserialize)] pub struct AuthenticationDatabase { pub users: Vec }