bw-web-api-rs 0.2.8

A Rust client for the StarCraft: Remastered API
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Avatar {
    pub level: u32,
    pub stat: String,
    pub url: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AvatarsStats {
    pub mm_protoss_wins: WinStats,
    pub mm_terran_wins: WinStats,
    pub mm_zerg_wins: WinStats,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct GameResult {
    pub attributes: GameResultAttributes,
    pub benefactor_id: String,
    pub create_time: String,
    pub game_id: String,
    pub gateway_id: u32,
    pub match_guid: String,
    pub players: Vec<Player>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct GameResultAttributes {
    pub client_version: String,
    #[serde(rename = "mapName")]
    pub map_name: String,
    pub tileset: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct MatchmakedStats {
    pub benefactor_id: String,
    pub bucket: u32,
    pub disconnects: u32,
    pub game_mode_id: u32,
    pub highest_points: u32,
    pub highest_rating: u32,
    pub loss_streak: u32,
    pub losses: u32,
    pub points: u32,
    pub rating: u32,
    pub season_id: u32,
    pub toon: String,
    pub toon_guid: u32,
    pub win_streak: u32,
    pub wins: u32,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Player {
    pub attributes: PlayerAttributes,
    pub result: String,
    pub stats: PlayerStats,
    pub toon: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PlayerAttributes {
    #[serde(rename = "gPlayerData_idx")]
    pub g_player_data_idx: String,
    pub left: String,
    pub race: Option<String>,
    pub team: Option<String>,
    pub r#type: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct PlayerStats {
    pub zerg_apm: Option<String>,
    pub zerg_games_played: Option<String>,
    pub zerg_play_time: Option<String>,
    pub zerg_resources_gas: Option<String>,
    pub zerg_resources_minerals: Option<String>,
    pub zerg_resources_score: Option<String>,
    pub zerg_resources_spent: Option<String>,
    pub zerg_score_overall: Option<String>,
    pub zerg_structures_razed: Option<String>,
    pub zerg_structures_lost: Option<String>,
    pub zerg_structures_constructed: Option<String>,
    pub zerg_structures_score: Option<String>,
    pub zerg_units_killed: Option<String>,
    pub zerg_units_lost: Option<String>,
    pub zerg_units_produced: Option<String>,
    pub zerg_units_score: Option<String>,
    pub zerg_draws: Option<String>,
    pub zerg_losses: Option<String>,
    pub zerg_wins: Option<String>,
    pub terran_apm: Option<String>,
    pub terran_games_played: Option<String>,
    pub terran_play_time: Option<String>,
    pub terran_resources_gas: Option<String>,
    pub terran_resources_minerals: Option<String>,
    pub terran_resources_score: Option<String>,
    pub terran_resources_spent: Option<String>,
    pub terran_score_overall: Option<String>,
    pub terran_structures_constructed: Option<String>,
    pub terran_structures_lost: Option<String>,
    pub terran_structures_razed: Option<String>,
    pub terran_structures_score: Option<String>,
    pub terran_units_killed: Option<String>,
    pub terran_units_lost: Option<String>,
    pub terran_units_produced: Option<String>,
    pub terran_units_score: Option<String>,
    pub terran_draws: Option<String>,
    pub terran_losses: Option<String>,
    pub terran_wins: Option<String>,
    pub protoss_apm: Option<String>,
    pub protoss_games_played: Option<String>,
    pub protoss_play_time: Option<String>,
    pub protoss_resources_gas: Option<String>,
    pub protoss_resources_minerals: Option<String>,
    pub protoss_resources_score: Option<String>,
    pub protoss_resources_spent: Option<String>,
    pub protoss_score_overall: Option<String>,
    pub protoss_structures_constructed: Option<String>,
    pub protoss_structures_lost: Option<String>,
    pub protoss_structures_razed: Option<String>,
    pub protoss_structures_score: Option<String>,
    pub protoss_units_killed: Option<String>,
    pub protoss_units_lost: Option<String>,
    pub protoss_units_produced: Option<String>,
    pub protoss_units_score: Option<String>,
    pub protoss_draws: Option<String>,
    pub protoss_losses: Option<String>,
    pub protoss_wins: Option<String>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Profile {
    pub avatar_id: String,
    pub description: String,
    pub private: bool,
    pub show_avatar_frame: bool,
    pub title: String,
    pub toon: String,
    pub toon_guid: u32,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct RawStats {
    pub legacy_disconnects: u32,
    pub legacy_losses: u32,
    pub legacy_toon_creation_time: u32,
    pub legacy_wins: u32,
    pub protoss_apm_max: u32,
    pub protoss_apm_min: u32,
    pub protoss_apm_sum: u32,
    pub protoss_disconnects_max: u32,
    pub protoss_disconnects_min: u32,
    pub protoss_disconnects_sum: u32,
    pub protoss_draws_max: u32,
    pub protoss_draws_min: u32,
    pub protoss_draws_sum: u32,
    pub protoss_losses_max: u32,
    pub protoss_losses_min: u32,
    pub protoss_losses_sum: u32,
    pub protoss_play_time_max: u32,
    pub protoss_play_time_min: u32,
    pub protoss_play_time_sum: u32,
    pub protoss_resources_gas_max: u32,
    pub protoss_resources_gas_min: u32,
    pub protoss_resources_gas_sum: u32,
    pub protoss_resources_minerals_max: u32,
    pub protoss_resources_minerals_min: u32,
    pub protoss_resources_minerals_sum: u32,
    pub protoss_resources_score_max: u32,
    pub protoss_resources_score_min: u32,
    pub protoss_resources_score_sum: u32,
    pub protoss_resources_spent_max: u32,
    pub protoss_resources_spent_min: u32,
    pub protoss_resources_spent_sum: u32,
    pub protoss_structures_constructed_max: u32,
    pub protoss_structures_constructed_min: u32,
    pub protoss_structures_constructed_sum: u32,
    pub protoss_structures_lost_max: u32,
    pub protoss_structures_lost_min: u32,
    pub protoss_structures_lost_sum: u32,
    pub protoss_structures_razed_max: u32,
    pub protoss_structures_razed_min: u32,
    pub protoss_structures_razed_sum: u32,
    pub protoss_structures_score_max: u32,
    pub protoss_structures_score_min: u32,
    pub protoss_structures_score_sum: u32,
    pub protoss_units_killed_max: u32,
    pub protoss_units_killed_min: u32,
    pub protoss_units_killed_sum: u32,
    pub protoss_units_lost_max: u32,
    pub protoss_units_lost_min: u32,
    pub protoss_units_lost_sum: u32,
    pub protoss_units_produced_max: u32,
    pub protoss_units_produced_min: u32,
    pub protoss_units_produced_sum: u32,
    pub protoss_units_score_max: u32,
    pub protoss_units_score_min: u32,
    pub protoss_units_score_sum: u32,
    pub protoss_wins_max: u32,
    pub protoss_wins_min: u32,
    pub protoss_wins_sum: u32,
    pub terran_apm_max: u32,
    pub terran_apm_min: u32,
    pub terran_apm_sum: u32,
    pub terran_disconnects_max: u32,
    pub terran_disconnects_min: u32,
    pub terran_disconnects_sum: u32,
    pub terran_draws_max: u32,
    pub terran_draws_min: u32,
    pub terran_draws_sum: u32,
    pub terran_losses_max: u32,
    pub terran_losses_min: u32,
    pub terran_losses_sum: u32,
    pub terran_play_time_max: u32,
    pub terran_play_time_min: u32,
    pub terran_play_time_sum: u32,
    pub terran_resources_gas_max: u32,
    pub terran_resources_gas_min: u32,
    pub terran_resources_gas_sum: u32,
    pub terran_resources_minerals_max: u32,
    pub terran_resources_minerals_min: u32,
    pub terran_resources_minerals_sum: u32,
    pub terran_resources_score_max: u32,
    pub terran_resources_score_min: u32,
    pub terran_resources_score_sum: u32,
    pub terran_resources_spent_max: u32,
    pub terran_resources_spent_min: u32,
    pub terran_resources_spent_sum: u32,
    pub terran_structures_constructed_max: u32,
    pub terran_structures_constructed_min: u32,
    pub terran_structures_constructed_sum: u32,
    pub terran_structures_lost_max: u32,
    pub terran_structures_lost_min: u32,
    pub terran_structures_lost_sum: u32,
    pub terran_structures_razed_max: u32,
    pub terran_structures_razed_min: u32,
    pub terran_structures_razed_sum: u32,
    pub terran_structures_score_max: u32,
    pub terran_structures_score_min: u32,
    pub terran_structures_score_sum: u32,
    pub terran_units_killed_max: u32,
    pub terran_units_killed_min: u32,
    pub terran_units_killed_sum: u32,
    pub terran_units_lost_max: u32,
    pub terran_units_lost_min: u32,
    pub terran_units_lost_sum: u32,
    pub terran_units_produced_max: u32,
    pub terran_units_produced_min: u32,
    pub terran_units_produced_sum: u32,
    pub terran_units_score_max: u32,
    pub terran_units_score_min: u32,
    pub terran_units_score_sum: u32,
    pub terran_wins_max: u32,
    pub terran_wins_min: u32,
    pub terran_wins_sum: u32,
    pub zerg_apm_max: u32,
    pub zerg_apm_min: u32,
    pub zerg_apm_sum: u32,
    pub zerg_disconnects_max: u32,
    pub zerg_disconnects_min: u32,
    pub zerg_disconnects_sum: u32,
    pub zerg_draws_max: u32,
    pub zerg_draws_min: u32,
    pub zerg_draws_sum: u32,
    pub zerg_losses_max: u32,
    pub zerg_losses_min: u32,
    pub zerg_losses_sum: u32,
    pub zerg_play_time_max: u32,
    pub zerg_play_time_min: u32,
    pub zerg_play_time_sum: u32,
    pub zerg_resources_gas_max: u32,
    pub zerg_resources_gas_min: u32,
    pub zerg_resources_gas_sum: u32,
    pub zerg_resources_minerals_max: u32,
    pub zerg_resources_minerals_min: u32,
    pub zerg_resources_minerals_sum: u32,
    pub zerg_resources_score_max: u32,
    pub zerg_resources_score_min: u32,
    pub zerg_resources_score_sum: u32,
    pub zerg_resources_spent_max: u32,
    pub zerg_resources_spent_min: u32,
    pub zerg_resources_spent_sum: u32,
    pub zerg_structures_constructed_max: u32,
    pub zerg_structures_constructed_min: u32,
    pub zerg_structures_constructed_sum: u32,
    pub zerg_structures_lost_max: u32,
    pub zerg_structures_lost_min: u32,
    pub zerg_structures_lost_sum: u32,
    pub zerg_structures_razed_max: u32,
    pub zerg_structures_razed_min: u32,
    pub zerg_structures_razed_sum: u32,
    pub zerg_structures_score_max: u32,
    pub zerg_structures_score_min: u32,
    pub zerg_structures_score_sum: u32,
    pub zerg_units_killed_max: u32,
    pub zerg_units_killed_min: u32,
    pub zerg_units_killed_sum: u32,
    pub zerg_units_lost_max: u32,
    pub zerg_units_lost_min: u32,
    pub zerg_units_lost_sum: u32,
    pub zerg_units_produced_max: u32,
    pub zerg_units_produced_min: u32,
    pub zerg_units_produced_sum: u32,
    pub zerg_units_score_max: u32,
    pub zerg_units_score_min: u32,
    pub zerg_units_score_sum: u32,
    pub zerg_wins_max: u32,
    pub zerg_wins_min: u32,
    pub zerg_wins_sum: u32,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Replay {
    pub attributes: ReplayAttributes,
    pub create_time: u32,
    pub link: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ReplayAttributes {
    pub game_creator: String,
    pub game_id: String,
    pub game_name: String,
    pub game_save_id: String,
    pub game_speed: String,
    pub game_sub_type: String,
    pub game_type: String,
    pub map_era: String,
    pub map_height: String,
    pub map_title: String,
    pub map_width: String,
    pub replay_description: String,
    pub replay_humans: String,
    pub replay_map_number: String,
    pub replay_max_players: String,
    pub replay_min_players: String,
    pub replay_opponents: String,
    pub replay_player_names: String,
    pub replay_player_races: String,
    pub replay_player_types: String,
    pub replay_result: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Stat {
    pub benefactor_id: String,
    pub gateway_id: u32,
    pub raw: RawStats,
    pub season_id: u32,
    pub toon: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Toon {
    pub games_last_week: u32,
    pub gateway_id: u32,
    pub guid: u32,
    pub toon: String,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct WinStats {
    pub bonus: f64,
    pub normal: f64,
    pub total: f64,
}