scaleway-rs 0.2.1

A pure Rust scaleway API binding.
Documentation
use crate::data::security_group::{ScalewaySecurityGroupDetails, ScalewaySecurityGroupDetailsRoot};
use crate::ScalewayApi;
use crate::ScalewayError;

pub struct ScalewayGetSecurityGroupBuilder {
    api: ScalewayApi,
    zone: String,
    security_group_id: String,
}

impl ScalewayGetSecurityGroupBuilder {
    pub fn new(api: ScalewayApi, zone: &str, security_group_id: &str) -> Self {
        ScalewayGetSecurityGroupBuilder {
            api,
            zone: zone.to_string(),
            security_group_id: security_group_id.to_string(),
        }
    }

    #[cfg(feature = "blocking")]
    pub fn run(self) -> Result<ScalewaySecurityGroupDetails, ScalewayError> {
        Ok(self
            .api
            .get(
                &format!(
                    "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{id}",
                    zone = self.zone,
                    id = self.security_group_id
                ),
                vec![],
            )?
            .json::<ScalewaySecurityGroupDetailsRoot>()?
            .security_group)
    }

    pub async fn run_async(self) -> Result<ScalewaySecurityGroupDetails, ScalewayError> {
        Ok(self
            .api
            .get_async(
                &format!(
                    "https://api.scaleway.com/instance/v1/zones/{zone}/security_groups/{id}",
                    zone = self.zone,
                    id = self.security_group_id
                ),
                vec![],
            )
            .await?
            .json::<ScalewaySecurityGroupDetailsRoot>()
            .await?
            .security_group)
    }
}