scaleway-rs 0.2.4

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

pub struct ScalewayGetSecurityGroupRuleBuilder {
    api: ScalewayApi,
    zone: String,
    security_group_id: String,
    rule_id: String,
}

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

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

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