freedom_models/
satellite_configuration.rs

1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4use time::OffsetDateTime;
5use url::Url;
6
7use crate::Hateoas;
8
9#[cfg(feature = "serde")]
10use super::utils;
11
12/// The Freedom API representation of a satellite.
13#[cfg_attr(
14    feature = "serde",
15    derive(Serialize, Deserialize),
16    serde(rename_all = "camelCase")
17)]
18#[derive(Debug, Clone, PartialEq, Eq)]
19#[cfg_attr(not(feature = "unstable"), non_exhaustive)]
20pub struct SatelliteConfiguration {
21    #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
22    pub created: OffsetDateTime,
23    #[cfg_attr(
24        feature = "serde",
25        serde(default, with = "time::serde::iso8601::option")
26    )]
27    pub modified: Option<OffsetDateTime>,
28    pub name: String,
29    #[cfg_attr(feature = "serde", serde(default))]
30    pub orbit: String,
31    #[cfg_attr(feature = "serde", serde(default))]
32    pub notes: String,
33    #[cfg_attr(feature = "serde", serde(rename = "pullTLE"))]
34    pub pull_tle: bool,
35    #[cfg_attr(feature = "serde", serde(default))]
36    pub internal_meta_data: Option<HashMap<String, String>>,
37    pub account_name: String,
38    #[cfg_attr(feature = "serde", serde(default))]
39    pub meta_data: Option<HashMap<String, String>>,
40    #[cfg_attr(
41        feature = "serde",
42        serde(rename = "_links", with = "utils::links::serde", default)
43    )]
44    pub links: HashMap<String, Url>,
45}
46
47impl Hateoas for SatelliteConfiguration {
48    fn get_links(&self) -> &HashMap<String, url::Url> {
49        &self.links
50    }
51
52    fn get_links_mut(&mut self) -> &mut HashMap<String, url::Url> {
53        &mut self.links
54    }
55}