use super::*;
impl ApiClient {
pub async fn variables(&self, service_environment_id: &str) -> Result<Vec<Variable>> {
Ok(self
.get::<VariablesPage>(&format!(
"/api/infra/services/{service_environment_id}/variables"
))
.await?
.variables)
}
pub async fn set_variable(
&self,
service_environment_id: &str,
key: &str,
value: &str,
secret: bool,
sealed: bool,
) -> Result<()> {
let _: serde_json::Value = self
.put(
&format!("/api/infra/services/{service_environment_id}/variables"),
&serde_json::json!({
"key": key,
"value": value,
"secret": secret,
"sealed": sealed,
}),
)
.await?;
Ok(())
}
pub async fn seal_variable(&self, variable_id: &str) -> Result<()> {
let _: serde_json::Value = self
.post_empty(&format!("/api/infra/variables/{variable_id}/seal"))
.await?;
Ok(())
}
pub async fn remove_variable(&self, variable_id: &str) -> Result<()> {
self.delete(&format!("/api/infra/variables/{variable_id}"))
.await
}
pub async fn reveal_variable(&self, variable_id: &str) -> Result<String> {
Ok(self
.post_empty::<RevealedVariable>(&format!("/api/infra/variables/{variable_id}/reveal"))
.await?
.value)
}
pub async fn import_variables(
&self,
service_environment_id: &str,
variables: &[VariableDraft],
) -> Result<u32> {
let imported: ImportedVariables = self
.post(
&format!("/api/infra/services/{service_environment_id}/variables/import"),
&serde_json::json!({ "variables": variables }),
)
.await?;
Ok(match imported.imported {
0 => variables.len() as u32,
counted => counted,
})
}
}