late-java-core 2.2.9

A Rust library for launching Minecraft Java Edition
pub mod microsoft;
pub mod mojang;
pub mod azauth;

pub use microsoft::*;
pub use mojang::*;
pub use azauth::*;

use serde::{Deserialize, Serialize};
use crate::error::Result;

/// Respuesta de autenticación
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthResponse {
    pub access_token: String,
    pub client_token: String,
    pub uuid: String,
    pub name: String,
    pub refresh_token: Option<String>,
    pub user_properties: String,
    pub meta: AuthMeta,
    pub xbox_account: Option<XboxAccount>,
    pub profile: Option<MinecraftProfile>,
}

/// Metadatos de autenticación
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthMeta {
    pub auth_type: String,
    pub access_token_expires_in: u64,
    pub demo: bool,
}

/// Cuenta de Xbox
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct XboxAccount {
    pub xuid: String,
    pub gamertag: String,
    pub age_group: String,
}

/// Perfil de Minecraft
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MinecraftProfile {
    pub skins: Vec<MinecraftSkin>,
    pub capes: Vec<MinecraftSkin>,
}

/// Skin de Minecraft
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MinecraftSkin {
    pub id: Option<String>,
    pub state: Option<String>,
    pub url: Option<String>,
    pub variant: Option<String>,
    pub alias: Option<String>,
    pub base64: Option<String>,
}

/// Error de autenticación
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuthError {
    pub error: String,
    pub error_type: Option<String>,
}