space-rx 0.2.0

Rust wrapper over the unofficial SpaceX API.
Documentation
#[derive(Debug, Deserialize)]
pub struct Launch {
    pub details: Option<String>,
    pub flight_number: u32,
    pub launch_date_local: String,
    pub launch_date_unix: u64,
    pub launch_date_utc: String,
    pub launch_site: LaunchSite,
    pub launch_success: Option<bool>,
    pub launch_year: String,
    pub links: LaunchLinks,
    pub mission_name: String,
    pub reuse: Reuse,
    pub rocket: LaunchRocket,
    pub telemetry: Telemetry,
    pub upcoming: bool
}

#[derive(Debug, Deserialize)]
pub struct LaunchRocket {
    pub first_stage: LaunchFirstStage,
    pub rocket_id: String,
    pub rocket_name: String,
    pub rocket_type: String,
    pub second_stage: LaunchSecondStage
}

#[derive(Debug, Deserialize)]
pub struct LaunchFirstStage {
    pub cores: Vec<Core>
}

#[derive(Debug, Deserialize)]
pub struct Core {
    pub block: Option<u16>,
    pub core_serial: Option<String>,
    pub flight: Option<u16>,
    pub land_success: Option<bool>,
    pub landing_type: Option<String>,
    pub landing_vehicle: Option<String>,
    pub reused: Option<bool>
}

#[derive(Debug, Deserialize)]
pub struct LaunchSecondStage {
    pub block: Option<u16>,
    pub payloads: Vec<LaunchPayload>
}

#[derive(Debug, Deserialize)]
pub struct LaunchPayload {
    pub customers: Vec<String>,
    pub manufacturer: Option<String>,
    pub nationality: Option<String>,
    pub norad_id: Option<Vec<u32>>,
    pub orbit: String,
    pub orbit_params: OrbitParams,
    pub payload_id: String,
    pub payload_mass_kg: Option<f64>,
    pub payload_mass_lbs: Option<f64>,
    pub payload_type: String,
    pub reused: bool
}

#[derive(Debug, Deserialize)]
pub struct OrbitParams {
    pub apoapsis_km: Option<f64>,
    pub eccentricity: Option<f64>,
    pub inclination_deg: Option<f64>,
    pub lifespan_years: Option<u32>,
    pub longitude: Option<f64>,
    pub periapsis_km: Option<f64>,
    pub period_min: Option<f64>,
    pub reference_system: String,
    pub regime: Option<String>,
    pub semi_major_axis_km: Option<f64>
}

#[derive(Debug, Deserialize)]
pub struct Telemetry {
    pub flight_club: Option<String>
}

#[derive(Debug, Deserialize)]
pub struct Reuse {
    pub capsule: bool,
    pub core: bool,
    pub fairings: bool,
    pub side_core1: bool,
    pub side_core2: bool
}

#[derive(Debug, Deserialize)]
pub struct LaunchSite {
    pub site_id: String,
    pub site_name: String,
    pub site_name_long: String
}

#[derive(Debug, Deserialize)]
pub struct LaunchLinks {
    pub article_link: Option<String>,
    pub mission_patch: Option<String>,
    pub mission_patch_small: Option<String>,
    pub presskit: Option<String>,
    pub reddit_campaign: Option<String>,
    pub reddit_launch: Option<String>,
    pub reddit_media: Option<String>,
    pub video_link: Option<String>,
    pub wikipedia: Option<String>
}