use serde::Serialize;
use crate::Auth;
use crate::Client;
use crate::Error;
#[derive(Debug, Serialize)]
pub struct ApproleOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub bind_secret_id: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secret_id_bound_cidrs: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secret_id_num_uses: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secret_id_ttl: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_local_secret_ids: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_ttl: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_max_ttl: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_policies: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_bound_cidrs: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_explicit_max_ttl: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_no_default_policy: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_num_uses: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_period: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub token_type: Option<String>,
}
pub async fn create_update(
client: &Client<impl Auth>,
name: &str,
opts: ApproleOptions,
) -> Result<(), Error> {
let path = format!("auth/approle/role/{}", name);
match client
.vault_request(reqwest::Method::POST, &path, Some(&opts))
.await
{
Err(e) => Err(e),
Ok(_) => Ok(()),
}
}