Skip to main content

xbp_oci/
resolver.rs

1use async_trait::async_trait;
2
3use crate::client::OciClient;
4use crate::error::Result;
5use crate::r#ref::OciRef;
6use crate::traits::OciResolver;
7
8/// Default resolver backed by [`OciClient`].
9pub struct DefaultOciResolver {
10    client: OciClient,
11}
12
13impl DefaultOciResolver {
14    pub fn new(client: OciClient) -> Self {
15        Self { client }
16    }
17}
18
19#[async_trait]
20impl OciResolver for DefaultOciResolver {
21    async fn resolve_digest(&self, image: &OciRef) -> Result<String> {
22        self.client.resolve_digest(image).await
23    }
24
25    async fn exists(&self, image: &OciRef) -> Result<bool> {
26        self.client.exists(image).await
27    }
28
29    async fn list_tags(&self, image: &OciRef, limit: Option<usize>) -> Result<Vec<String>> {
30        self.client.list_tags(image, limit).await
31    }
32}