edjr 0.1.3

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")]
    pub name: String,
    #[serde(alias = "Name_Localised", alias = "Type_Localised")]
    pub name_display: Option<String>,
    pub count: Option<u64>,
}

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

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

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

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

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