Skip to main content

nerva/clients/donki/
sep.rs

1use crate::prelude::{Client, Params};
2use crate::prelude::params::DefaultParams;
3use std::error::Error;
4
5pub type SEPParams<'p> = DefaultParams<'p>;
6
7#[derive(Debug, Clone)]
8pub struct SEP {}
9
10impl Default for SEP {
11    fn default() -> Self {
12        SEP {}
13    }
14}
15
16impl SEP {
17    pub fn new() -> Self {
18        SEP::default()
19    }
20}
21
22impl<'p, PARAMS> Client<PARAMS> for SEP
23where
24    PARAMS: Params,
25{
26    const BASE_URL: &'static str = "https://api.nasa.gov/DONKI/SEP";
27    type Response = serde_json::Value;
28
29    fn get(&self, params: PARAMS) -> Result<Self::Response, Box<dyn Error>> {
30        let base_url = <SEP as Client<PARAMS>>::BASE_URL;
31        let url_with_params = format!("{}?{}", base_url, params.into());
32        let url_with_key = crate::prelude::keys::include(&url_with_params)?;
33        let response = ureq::get(&url_with_key).call()?;
34        let json = serde_json::json!(response.into_string()?);
35        return Ok(json)
36    }
37}
38
39#[cfg(test)]
40mod tests {
41    use super::*;
42
43    #[test]
44    fn test_sep() {
45        let sep = SEP::new();
46        let params = SEPParams::default();
47        let response = sep.get(params);
48        assert!(response.is_ok());
49    }
50}