1use async_trait::async_trait;
2
3use crate::client::OciClient;
4use crate::error::Result;
5use crate::r#ref::OciRef;
6use crate::traits::OciResolver;
7
8pub 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}