use object_store::azure::MicrosoftAzureBuilder;
use polars_io::cloud::{AzureConfigKey, CloudOptions};
struct AzureOptionsBuilder {
builder: MicrosoftAzureBuilder,
}
impl AzureOptionsBuilder {
fn new() -> Self {
Self {
builder: MicrosoftAzureBuilder::new(),
}
}
fn get_config_value(&self, key: AzureConfigKey) -> Option<(AzureConfigKey, String)> {
self.builder.get_config_value(&key).map(|v| (key, v))
}
}
pub(crate) fn build_cloud_options() -> Result<CloudOptions, nu_protocol::ShellError> {
let builder = AzureOptionsBuilder::new();
let configs = vec![
AzureConfigKey::AccountName,
AzureConfigKey::AccessKey,
AzureConfigKey::AccessKey,
AzureConfigKey::ClientId,
AzureConfigKey::ClientSecret,
AzureConfigKey::AuthorityId,
]
.into_iter()
.filter_map(|key| builder.get_config_value(key))
.collect::<Vec<(AzureConfigKey, String)>>();
Ok(CloudOptions::default().with_azure(configs))
}