edjr 0.1.1

Elite Dangerous Journal Reader
Documentation
use serde::Deserialize;

#[derive(Debug, Deserialize)]
pub enum Vessel {
    Ship,
    #[serde(alias = "SRV")]
    Srv,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Cargo {
    #[serde(alias = "Name", alias = "Type")]
    name: String,
    #[serde(alias = "Name_Localised", alias = "Type_Localised")]
    name_display: Option<String>,
    count: Option<u64>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct CargoEvent {
    count: u64,
    vessel: Vessel,
    inventory: Option<Vec<Cargo>>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct CargoDepotEvent {
    cargo_type: String,
    count: u64,
    progress: f64,
    items_collected: u64,
    items_delivered: u64,
    total_items_to_deliver: u64,
    #[serde(alias = "MissionID")]
    mission_id: u64,
    #[serde(alias = "StartMarketID")]
    start_market_id: u64,
    #[serde(alias = "EndMarketID")]
    end_market_id: u64,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct CargoTransferEvent {
    transfers: Vec<Cargo>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct CollectCargoEvent {
    stolen: bool,
    #[serde(flatten)]
    cargo: Cargo,
    #[serde(alias = "MarketID")]
    market_id: Option<u64>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct EjectCargoEvent {
    abandoned: bool,
    #[serde(flatten)]
    cargo: Cargo,
}