use crate::error::{Error, Result};
use crate::storage::traits::{ManifestMetadata, StorageBackend};
use atlas_c2pa_lib::manifest::Manifest;
use reqwest;
#[allow(dead_code)]
pub struct RekorStorage {
client: reqwest::blocking::Client,
base_url: String,
}
impl RekorStorage {
pub fn new() -> Result<Self> {
Self::new_with_url("https://rekor.sigstore.dev".to_string())
}
pub fn new_with_url(url: String) -> Result<Self> {
Ok(RekorStorage {
client: reqwest::blocking::Client::new(),
base_url: url,
})
}
}
impl StorageBackend for RekorStorage {
fn get_base_uri(&self) -> String {
self.base_url.clone()
}
fn store_manifest(&self, _manifest: &Manifest) -> Result<String> {
println!("Would store manifest at: {}", self.base_url);
Ok("dummy-manifest-id".to_string()) }
fn retrieve_manifest(&self, _id: &str) -> Result<Manifest> {
todo!("Implement manifest retrieval")
}
fn list_manifests(&self) -> Result<Vec<ManifestMetadata>> {
todo!("Implement manifest listing")
}
fn delete_manifest(&self, _id: &str) -> Result<()> {
Err(Error::Storage(
"Delete operation not supported for Rekor storage".to_string(),
))
}
fn as_any(&self) -> &dyn std::any::Any {
self
}
}