use serde::Serialize;
use crate::api::orgs::OrgHandler;
use crate::models::orgs::OrgArtifactDeploymentRecordsResponse;
use crate::Result;
pub struct OrgArtifactMetadataHandler<'octo, 'b> {
handler: &'b OrgHandler<'octo>,
}
impl<'octo, 'b> OrgArtifactMetadataHandler<'octo, 'b> {
pub(crate) fn new(handler: &'b OrgHandler<'octo>) -> Self {
Self { handler }
}
pub async fn create_deployment_record(
&self,
body: &impl Serialize,
) -> Result<OrgArtifactDeploymentRecordsResponse> {
let route = format!(
"/orgs/{}/artifacts/metadata/deployment-record",
self.handler.owner
);
self.handler.crab.post(route, Some(body)).await
}
pub async fn set_cluster_deployment_records(
&self,
cluster: impl AsRef<str>,
body: &impl Serialize,
) -> Result<()> {
let route = format!(
"/orgs/{}/artifacts/metadata/deployment-record/cluster/{}",
self.handler.owner,
cluster.as_ref()
);
let res = self.handler.crab._post(route, Some(body)).await?;
crate::map_github_error(res).await.map(drop)
}
pub async fn create_cluster_deployment_records_job(
&self,
cluster: impl AsRef<str>,
body: &impl Serialize,
) -> Result<serde_json::Value> {
let route = format!(
"/orgs/{}/artifacts/metadata/deployment-record/cluster/{}/jobs",
self.handler.owner,
cluster.as_ref()
);
self.handler.crab.post(route, Some(body)).await
}
pub async fn get_cluster_deployment_records_job(
&self,
cluster: impl AsRef<str>,
job_id: impl AsRef<str>,
) -> Result<serde_json::Value> {
let route = format!(
"/orgs/{}/artifacts/metadata/deployment-record/cluster/{}/jobs/{}",
self.handler.owner,
cluster.as_ref(),
job_id.as_ref()
);
self.handler.crab.get(route, None::<&()>).await
}
pub async fn create_storage_record(&self, body: &impl Serialize) -> Result<serde_json::Value> {
let route = format!(
"/orgs/{}/artifacts/metadata/storage-record",
self.handler.owner
);
self.handler.crab.post(route, Some(body)).await
}
pub async fn list_deployment_records(
&self,
subject_digest: impl AsRef<str>,
) -> Result<OrgArtifactDeploymentRecordsResponse> {
let route = format!(
"/orgs/{}/artifacts/{}/metadata/deployment-records",
self.handler.owner,
subject_digest.as_ref()
);
self.handler.crab.get(route, None::<&()>).await
}
pub async fn list_storage_records(
&self,
subject_digest: impl AsRef<str>,
) -> Result<serde_json::Value> {
let route = format!(
"/orgs/{}/artifacts/{}/metadata/storage-records",
self.handler.owner,
subject_digest.as_ref()
);
self.handler.crab.get(route, None::<&()>).await
}
}