freedom_api/api/
post.rs

1pub mod band;
2pub mod overrides;
3pub mod request;
4pub mod sat_config;
5pub mod satellite;
6pub mod user;
7
8pub use self::{
9    band::BandDetailsBuilder, overrides::OverrideBuilder, request::TaskRequestBuilder,
10    sat_config::SatelliteConfigurationBuilder, satellite::SatelliteBuilder, user::UserBuilder,
11};
12
13use super::Value;
14
15/// A trait defining the response and send future for HTTP POSTs
16pub trait Post {
17    /// The deserialized response from the Freedom API after a successful POST
18    type Response: Value;
19
20    /// The future used to send the POST
21    fn send(
22        self,
23    ) -> impl Future<Output = Result<Self::Response, crate::error::Error>> + Send + Sync;
24}
25
26#[derive(Debug, Clone, PartialEq)]
27enum UrlResult {
28    Checked(String),
29    Unchecked(Result<url::Url, crate::error::Error>),
30}
31
32impl UrlResult {
33    fn try_convert(self) -> Result<String, crate::error::Error> {
34        match self {
35            UrlResult::Checked(url) => Ok(url),
36            UrlResult::Unchecked(Ok(url)) => Ok(url.to_string()),
37            UrlResult::Unchecked(Err(error)) => Err(error),
38        }
39    }
40}