use crate::evidence::EvidenceBundle;
pub type AdapterResult<T> = Result<T, Box<dyn std::error::Error + Send + Sync>>;
pub trait PlatformAdapter: Send + Sync {
fn collect_pr_evidence(
&self,
owner: &str,
repo: &str,
pr_number: u32,
) -> AdapterResult<EvidenceBundle>;
fn collect_pr_batch_evidence(
&self,
owner: &str,
repo: &str,
pr_numbers: &[u32],
) -> Vec<(String, AdapterResult<EvidenceBundle>)> {
pr_numbers
.iter()
.map(|&n| {
let subject = format!("#{n}");
let bundle = self.collect_pr_evidence(owner, repo, n);
(subject, bundle)
})
.collect()
}
fn collect_release_evidence(
&self,
owner: &str,
repo: &str,
base_tag: &str,
head_tag: &str,
) -> AdapterResult<EvidenceBundle>;
fn collect_repo_evidence(
&self,
owner: &str,
repo: &str,
reference: &str,
) -> AdapterResult<EvidenceBundle>;
}