use crate::errors::*;
use opendal::Operator;
use opendal::layers::{HttpClientLayer, LoggingLayer};
use opendal::services::Webdav;
use super::http_client::set_user_agent;
pub struct WebdavCache;
impl WebdavCache {
pub fn build(
endpoint: &str,
key_prefix: &str,
username: Option<&str>,
password: Option<&str>,
token: Option<&str>,
) -> Result<Operator> {
let builder = Webdav::default()
.endpoint(endpoint)
.root(key_prefix)
.username(username.unwrap_or_default())
.password(password.unwrap_or_default())
.token(token.unwrap_or_default());
let op = Operator::new(builder)?
.layer(HttpClientLayer::new(set_user_agent()))
.layer(LoggingLayer::default())
.finish();
Ok(op)
}
}