antimatter 2.0.13

antimatter.io Rust library for data control
Documentation
use super::Session;
use crate::session::session::SessionError;
use crate::session::RUNTIME;
use antimatter_api::apis::policy_api::{self as api};
use antimatter_api::models::{DomainPolicy, DomainPolicyRule, NewDomainPolicyRule};
use serde_json::Value;

impl Session {
    /// Creates a new policy rule for the session's domain.
    ///
    /// Arguments:
    ///
    /// * `domain_policy_rule` - A NewDomainPolicyRule containing the policy
    ///     rule's configuration.
    ///
    /// Returns:
    ///
    /// A `Result` containing a `DomainPolicyRule` with the information
    /// confirming creation of the policy rule.
    pub fn create_policy_rule(
        &mut self,
        domain_policy_rule: NewDomainPolicyRule,
    ) -> Result<DomainPolicyRule, SessionError> {
        let conf = self.get_configuration()?;

        let res = RUNTIME
            .block_on(api::domain_create_policy_rule(
                &conf,
                self.get_domain_id().as_str(),
                domain_policy_rule,
            ))
            .map_err(|e| SessionError::APIError(format!("{}", e)))?;

        Ok(res)
    }

    /// Delete a policy rule from the session's domain.
    ///
    /// Arguments:
    ///
    /// * `rule_id` - A &str containing the policy rule's ID.
    pub fn delete_policy_rule(&mut self, rule_id: &str) -> Result<(), SessionError> {
        let conf = self.get_configuration()?;

        RUNTIME
            .block_on(api::domain_delete_policy_rule(
                &conf,
                self.get_domain_id().as_str(),
                rule_id,
            ))
            .map_err(|e| SessionError::APIError(format!("{}", e)))?;

        Ok(())
    }

    /// Fetches a list of policy rules for the session's domain.
    ///
    /// Returns:
    ///
    /// A `Result` containing a `DomainPolicy` with a vector of policy rules.
    pub fn list_policy_rules(&mut self) -> Result<DomainPolicy, SessionError> {
        let conf = self.get_configuration()?;

        let res = RUNTIME
            .block_on(api::domain_list_policy_rules(
                &conf,
                self.get_domain_id().as_str(),
            ))
            .map_err(|e| SessionError::APIError(format!("{}", e)))?;

        Ok(res)
    }

    /// Update a policy rule in the session's domain.
    ///
    /// Arguments:
    ///
    /// * `rule_id` - A &str containing the policy rule's ID.
    /// * `domain_policy_rule` - A NewDomainPolicyRule containing the policy
    ///     rule's configuration.
    pub fn update_policy_rule(
        &mut self,
        rule_id: &str,
        domain_policy_rule: NewDomainPolicyRule,
    ) -> Result<(), SessionError> {
        let conf = self.get_configuration()?;

        RUNTIME
            .block_on(api::domain_update_policy_rule(
                &conf,
                self.get_domain_id().as_str(),
                rule_id,
                domain_policy_rule,
            ))
            .map_err(|e| SessionError::APIError(format!("{}", e)))?;

        Ok(())
    }

    /// Renumbers all policy rules in the session's domain.
    ///
    /// Returns:
    ///
    /// A `Result` containing a `DomainPolicy` with a vector of policy rules.
    pub fn renumber_policy_rules(&mut self) -> Result<DomainPolicy, SessionError> {
        let conf = self.get_configuration()?;

        let res = RUNTIME
            .block_on(api::domain_renumber_policy_rules(
                &conf,
                self.get_domain_id().as_str(),
                Some(Value::Object(Default::default())),
            ))
            .map_err(|e| SessionError::APIError(format!("{}", e)))?;

        Ok(res)
    }
}