use crate::error::Result;
use opendal::Configurator;
use opendal::Operator;
use opendal::layers::TimeoutLayer;
use opendal::services::OssConfig;
use std::collections::HashMap;
use std::time::Duration;
pub(crate) fn oss_config_build(props: &HashMap<String, String>) -> Result<Operator> {
let config = OssConfig::from_iter(props.clone())?;
let op = Operator::from_config(config)?.finish();
let timeout_layer = TimeoutLayer::new()
.with_timeout(Duration::from_secs(10))
.with_io_timeout(Duration::from_secs(30));
Ok(op.layer(timeout_layer))
}
pub(crate) fn parse_oss_path(path: &str) -> (&str, &str) {
let path = path.strip_prefix("oss://").unwrap_or(path);
match path.find('/') {
Some(idx) => (&path[..idx], &path[idx + 1..]),
None => (path, ""),
}
}