use anyhow::Result;
use tangled_api::lexicon::sh::tangled::repo as tangled_repo;
use super::auth::PdsAuth;
use super::types::Secret;
use super::{http, service_auth};
pub async fn list_repo_secrets(
service_base: &str,
pds_base: &str,
auth: &PdsAuth,
repo_at: &str,
) -> Result<Vec<Secret>> {
let token = service_auth::mint(
pds_base,
auth,
service_base,
tangled_repo::list_secrets::NSID,
)
.await?;
let params = tangled_repo::list_secrets::Params {
repo: repo_at.to_string(),
};
let rb = tangled_repo::list_secrets(http(), service_base, ¶ms)
.bearer_auth(&token);
let res: tangled_repo::list_secrets::Output = super::xrpc_send(rb).await?;
Ok(res.secrets)
}
pub async fn add_repo_secret(
service_base: &str,
pds_base: &str,
auth: &PdsAuth,
repo_at: &str,
key: &str,
value: &str,
) -> Result<()> {
let token = service_auth::mint(
pds_base,
auth,
service_base,
tangled_repo::add_secret::NSID,
)
.await?;
let input = tangled_repo::add_secret::Input {
repo: repo_at.to_string(),
key: key.to_string(),
value: value.to_string(),
};
let rb = tangled_repo::add_secret(http(), service_base, &input)
.bearer_auth(&token);
super::xrpc_send_unit(rb).await?;
Ok(())
}
pub async fn remove_repo_secret(
service_base: &str,
pds_base: &str,
auth: &PdsAuth,
repo_at: &str,
key: &str,
) -> Result<()> {
let token = service_auth::mint(
pds_base,
auth,
service_base,
tangled_repo::remove_secret::NSID,
)
.await?;
let input = tangled_repo::remove_secret::Input {
repo: repo_at.to_string(),
key: key.to_string(),
};
let rb = tangled_repo::remove_secret(http(), service_base, &input)
.bearer_auth(&token);
super::xrpc_send_unit(rb).await?;
Ok(())
}