scaleway-rs 0.2.7

A pure Rust scaleway API binding.
Documentation
use crate::ScalewayApi;
use crate::ScalewayError;
use crate::data::project::ScalewayProject;

/// Builder for fetching a single project.
///
/// Created by [`ScalewayApi::get_project`](crate::ScalewayApi::get_project).
/// Call [`run`](Self::run) or [`run_async`](Self::run_async) to execute.
pub struct ScalewayGetProjectBuilder {
    api: ScalewayApi,
    project_id: String,
}

impl ScalewayGetProjectBuilder {
    pub fn new(api: ScalewayApi, project_id: &str) -> Self {
        ScalewayGetProjectBuilder {
            api,
            project_id: project_id.to_string(),
        }
    }

    /// Fetches the project (blocking).
    #[cfg(feature = "blocking")]
    pub fn run(self) -> Result<ScalewayProject, ScalewayError> {
        Ok(self
            .api
            .get(
                &format!(
                    "https://api.scaleway.com/account/v3/projects/{project_id}",
                    project_id = self.project_id
                ),
                vec![],
            )?
            .json::<ScalewayProject>()?)
    }

    /// Fetches the project.
    pub async fn run_async(self) -> Result<ScalewayProject, ScalewayError> {
        Ok(self
            .api
            .get_async(
                &format!(
                    "https://api.scaleway.com/account/v3/projects/{project_id}",
                    project_id = self.project_id
                ),
                vec![],
            )
            .await?
            .json::<ScalewayProject>()
            .await?)
    }
}