diff --git a/sdk/data_tables/examples/table_00.rs b/sdk/data_tables/examples/table_00.rs index 5a3b18696b..82625d3e7c 100644 --- a/sdk/data_tables/examples/table_00.rs +++ b/sdk/data_tables/examples/table_00.rs @@ -27,7 +27,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify the table name as first command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let table_service = storage_client.table_service_client()?; diff --git a/sdk/storage/examples/account00.rs b/sdk/storage/examples/account00.rs index e8bef72ed2..3089d2c768 100644 --- a/sdk/storage/examples/account00.rs +++ b/sdk/storage/examples/account00.rs @@ -8,7 +8,8 @@ async fn main() -> azure_core::Result<()> { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let response = storage_client .get_account_information() diff --git a/sdk/storage/src/core/clients/storage_client.rs b/sdk/storage/src/core/clients/storage_client.rs index 6d05da63a2..1c91f9b3ae 100644 --- a/sdk/storage/src/core/clients/storage_client.rs +++ b/sdk/storage/src/core/clients/storage_client.rs @@ -80,7 +80,7 @@ pub struct StorageClient { } impl StorageClient { - pub fn new_access_key(account: A, key: K) -> Self + pub fn new_access_key(account: A, key: K, options: StorageOptions) -> Self where A: Into, K: Into, @@ -88,8 +88,7 @@ impl StorageClient { let account = account.into(); let key = key.into(); let storage_credentials = StorageCredentials::Key(account.clone(), key); - let pipeline = - new_pipeline_from_options(StorageOptions::new(), storage_credentials.clone()); + let pipeline = new_pipeline_from_options(options, storage_credentials.clone()); Self { blob_storage_url: get_endpoint_uri(None, &account, "blob").unwrap(), @@ -114,6 +113,7 @@ impl StorageClient { table_storage_url: &Url, queue_storage_url: &Url, filesystem_url: &Url, + options: StorageOptions, ) -> Self { Self::new_emulator_with_account( blob_storage_url, @@ -122,6 +122,7 @@ impl StorageClient { filesystem_url, EMULATOR_ACCOUNT, EMULATOR_ACCOUNT_KEY, + options, ) } @@ -136,6 +137,7 @@ impl StorageClient { &table_storage_url, &queue_storage_url, &filesystem_url, + StorageOptions::default(), ) } @@ -146,6 +148,7 @@ impl StorageClient { filesystem_url: &Url, account: A, key: K, + options: StorageOptions, ) -> Self where A: Into, @@ -154,7 +157,7 @@ impl StorageClient { let account = account.into(); let key = key.into(); let storage_credentials = StorageCredentials::Key(account.clone(), key.clone()); - let pipeline = new_pipeline_from_options(StorageOptions::new(), storage_credentials); + let pipeline = new_pipeline_from_options(options, storage_credentials); let blob_storage_url = Url::parse(&format!("{}{}", blob_storage_url, account)).unwrap(); let table_storage_url = Url::parse(&format!("{}{}", table_storage_url, account)).unwrap(); let queue_storage_url = Url::parse(&format!("{}{}", queue_storage_url, account)).unwrap(); @@ -172,7 +175,11 @@ impl StorageClient { } } - pub fn new_sas_token(account: A, sas_token: S) -> azure_core::Result + pub fn new_sas_token( + account: A, + sas_token: S, + options: StorageOptions, + ) -> azure_core::Result where A: Into, S: AsRef, @@ -181,8 +188,7 @@ impl StorageClient { let storage_credentials = StorageCredentials::SASToken(get_sas_token_parms(sas_token.as_ref())?); - let pipeline = - new_pipeline_from_options(StorageOptions::new(), storage_credentials.clone()); + let pipeline = new_pipeline_from_options(options, storage_credentials.clone()); Ok(Self { blob_storage_url: get_endpoint_uri(None, &account, "blob")?, @@ -200,7 +206,7 @@ impl StorageClient { }) } - pub fn new_bearer_token(account: A, bearer_token: BT) -> Self + pub fn new_bearer_token(account: A, bearer_token: BT, options: StorageOptions) -> Self where A: Into, BT: Into, @@ -208,8 +214,7 @@ impl StorageClient { let account = account.into(); let bearer_token = bearer_token.into(); let storage_credentials = StorageCredentials::BearerToken(bearer_token); - let pipeline = - new_pipeline_from_options(StorageOptions::new(), storage_credentials.clone()); + let pipeline = new_pipeline_from_options(options, storage_credentials.clone()); Self { blob_storage_url: get_endpoint_uri(None, &account, "blob").unwrap(), @@ -228,14 +233,17 @@ impl StorageClient { } } - pub fn new_token_credential(account: A, token_credential: Arc) -> Self + pub fn new_token_credential( + account: A, + token_credential: Arc, + options: StorageOptions, + ) -> Self where A: Into, { let account = account.into(); let storage_credentials = StorageCredentials::TokenCredential(token_credential); - let pipeline = - new_pipeline_from_options(StorageOptions::new(), storage_credentials.clone()); + let pipeline = new_pipeline_from_options(options, storage_credentials.clone()); Self { blob_storage_url: get_endpoint_uri(None, &account, "blob").unwrap(), @@ -254,7 +262,10 @@ impl StorageClient { } } - pub fn new_connection_string(connection_string: &str) -> azure_core::Result { + pub fn new_connection_string( + connection_string: &str, + options: StorageOptions, + ) -> azure_core::Result { match ConnectionString::new(connection_string)? { ConnectionString { account_name: Some(account), @@ -271,7 +282,7 @@ impl StorageClient { let storage_credentials = StorageCredentials::SASToken(get_sas_token_parms( sas_token, )?); - let pipeline = new_pipeline_from_options(StorageOptions::new(), storage_credentials.clone()); + let pipeline = new_pipeline_from_options(options, storage_credentials.clone()); Ok(Self { storage_credentials, @@ -295,7 +306,7 @@ impl StorageClient { } => { let storage_credentials = StorageCredentials::SASToken(get_sas_token_parms(sas_token)?); let pipeline = - new_pipeline_from_options(StorageOptions::new(), storage_credentials.clone()); + new_pipeline_from_options(options, storage_credentials.clone()); Ok(Self { storage_credentials, blob_storage_url: get_endpoint_uri(blob_endpoint, account, "blob")?, @@ -317,7 +328,7 @@ impl StorageClient { } => { let storage_credentials = StorageCredentials::Key(account.to_owned(), key.to_owned()); - let pipeline = new_pipeline_from_options(StorageOptions::new(), storage_credentials.clone()); + let pipeline = new_pipeline_from_options(options, storage_credentials.clone()); Ok(Self { storage_credentials, blob_storage_url: get_endpoint_uri(blob_endpoint, account, "blob")?, @@ -535,7 +546,7 @@ fn new_pipeline_from_options(options: StorageOptions, credentials: StorageCreden Pipeline::new( option_env!("CARGO_PKG_NAME"), option_env!("CARGO_PKG_VERSION"), - options.options, + options.client_options, Vec::new(), per_retry_policies, ) @@ -543,13 +554,13 @@ fn new_pipeline_from_options(options: StorageOptions, credentials: StorageCreden #[derive(Debug, Clone, Default)] pub struct StorageOptions { - options: ClientOptions, + client_options: ClientOptions, timeout_policy: TimeoutPolicy, } impl StorageOptions { - fn new() -> StorageOptions { - Self::default() + setters! { + client_options: ClientOptions, } pub fn set_timeout(&mut self, default_timeout: Timeout) { diff --git a/sdk/storage/src/core/prelude.rs b/sdk/storage/src/core/prelude.rs index 50e33d05dc..8fe172db99 100644 --- a/sdk/storage/src/core/prelude.rs +++ b/sdk/storage/src/core/prelude.rs @@ -1,5 +1,5 @@ pub use crate::core::{ - clients::StorageClient, + clients::{StorageClient, StorageOptions}, shared_access_signature::{ account_sas::{AccountSasPermissions, AccountSasResource, AccountSasResourceType}, service_sas::{BlobSasPermissions, BlobSignedResource}, diff --git a/sdk/storage/tests/account.rs b/sdk/storage/tests/account.rs index 6f2c4b0f51..589943c5fb 100644 --- a/sdk/storage/tests/account.rs +++ b/sdk/storage/tests/account.rs @@ -8,7 +8,8 @@ async fn get_account_information() { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); storage_client .get_account_information() diff --git a/sdk/storage_blobs/examples/blob_00.rs b/sdk/storage_blobs/examples/blob_00.rs index 48a7f2d23c..5f756f4e1d 100644 --- a/sdk/storage_blobs/examples/blob_00.rs +++ b/sdk/storage_blobs/examples/blob_00.rs @@ -20,7 +20,8 @@ async fn main() -> azure_core::Result<()> { .nth(2) .expect("please specify blob name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); // this is how you would use the SAS token: // let storage_client = StorageAccountClient::new_sas_token(http_client.clone(), &account, diff --git a/sdk/storage_blobs/examples/blob_01.rs b/sdk/storage_blobs/examples/blob_01.rs index 795bd98714..2c219a8cb8 100644 --- a/sdk/storage_blobs/examples/blob_01.rs +++ b/sdk/storage_blobs/examples/blob_01.rs @@ -16,7 +16,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let container_client = storage_client.container_client(&container_name); let blob_client = container_client.blob_client("SorgeniaReorganizeRebuildIndexes.zip"); diff --git a/sdk/storage_blobs/examples/blob_02_bearer_token.rs b/sdk/storage_blobs/examples/blob_02_bearer_token.rs index 60076e9be6..1497c1d331 100644 --- a/sdk/storage_blobs/examples/blob_02_bearer_token.rs +++ b/sdk/storage_blobs/examples/blob_02_bearer_token.rs @@ -21,9 +21,10 @@ async fn main() -> azure_core::Result<()> { .nth(4) .expect("please specify the bearer token as fourth command line parameter"); - let blob_client = StorageClient::new_bearer_token(&account, bearer_token) - .container_client(&container) - .blob_client(&blob); + let blob_client = + StorageClient::new_bearer_token(&account, bearer_token, StorageOptions::default()) + .container_client(&container) + .blob_client(&blob); trace!("Requesting blob"); diff --git a/sdk/storage_blobs/examples/blob_04.rs b/sdk/storage_blobs/examples/blob_04.rs index 35c5b84fd6..1f592c43a0 100644 --- a/sdk/storage_blobs/examples/blob_04.rs +++ b/sdk/storage_blobs/examples/blob_04.rs @@ -17,9 +17,10 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let blob_client = StorageClient::new_access_key(&account, &access_key) - .container_client(&container_name) - .blob_client("test1"); + let blob_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container_name) + .blob_client("test1"); // this example fills a 1 KB file with ASCII text and // sends it in chunks of 256 bytes (4 chunks). diff --git a/sdk/storage_blobs/examples/blob_05_default_credential.rs b/sdk/storage_blobs/examples/blob_05_default_credential.rs index 1aa2afa32d..77efdd3d6a 100644 --- a/sdk/storage_blobs/examples/blob_05_default_credential.rs +++ b/sdk/storage_blobs/examples/blob_05_default_credential.rs @@ -28,9 +28,13 @@ async fn main() -> azure_core::Result<()> { .get_token("https://storage.azure.com/") .await?; - let blob_client = StorageClient::new_bearer_token(&account, bearer_token.token.secret()) - .container_client(&container) - .blob_client(&blob); + let blob_client = StorageClient::new_bearer_token( + &account, + bearer_token.token.secret(), + StorageOptions::default(), + ) + .container_client(&container) + .blob_client(&blob); trace!("Requesting blob"); diff --git a/sdk/storage_blobs/examples/blob_06_auto_refreshing_credentials.rs b/sdk/storage_blobs/examples/blob_06_auto_refreshing_credentials.rs index a4b12551dc..6d29bd107c 100644 --- a/sdk/storage_blobs/examples/blob_06_auto_refreshing_credentials.rs +++ b/sdk/storage_blobs/examples/blob_06_auto_refreshing_credentials.rs @@ -25,9 +25,10 @@ async fn main() -> azure_core::Result<()> { let creds = Arc::new(DefaultAzureCredential::default()); let auto_creds = Arc::new(AutoRefreshingTokenCredential::new(creds)); - let blob_client = StorageClient::new_token_credential(&account, auto_creds) - .container_client(&container) - .blob_client(&blob); + let blob_client = + StorageClient::new_token_credential(&account, auto_creds, StorageOptions::default()) + .container_client(&container) + .blob_client(&blob); trace!("Requesting blob"); let content = blob_client.get_content().await?; diff --git a/sdk/storage_blobs/examples/blob_range.rs b/sdk/storage_blobs/examples/blob_range.rs index 2e2e9f7a6a..61094ec976 100644 --- a/sdk/storage_blobs/examples/blob_range.rs +++ b/sdk/storage_blobs/examples/blob_range.rs @@ -17,9 +17,10 @@ async fn main() -> azure_core::Result<()> { .nth(2) .expect("please specify blob name as command line parameter"); - let blob_client = StorageClient::new_access_key(&account, &access_key) - .container_client(&container) - .blob_client(&blob); + let blob_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container) + .blob_client(&blob); // 1024 G, 512 H and 2048 I let mut buf: Vec = Vec::with_capacity(1024 * 4); diff --git a/sdk/storage_blobs/examples/connection_string.rs b/sdk/storage_blobs/examples/connection_string.rs index 8ef7369c49..fbc6324693 100644 --- a/sdk/storage_blobs/examples/connection_string.rs +++ b/sdk/storage_blobs/examples/connection_string.rs @@ -13,7 +13,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let storage_client = StorageClient::new_connection_string(&connection_string)?; + let storage_client = + StorageClient::new_connection_string(&connection_string, StorageOptions::default())?; let container_client = storage_client.container_client(&container_name); let blob_service = storage_client.blob_service_client(); diff --git a/sdk/storage_blobs/examples/container_00.rs b/sdk/storage_blobs/examples/container_00.rs index 1ac537cfed..68ae2a8f8d 100644 --- a/sdk/storage_blobs/examples/container_00.rs +++ b/sdk/storage_blobs/examples/container_00.rs @@ -15,7 +15,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service_client = storage_client.blob_service_client(); let container_client = storage_client.container_client(container_name); diff --git a/sdk/storage_blobs/examples/container_01.rs b/sdk/storage_blobs/examples/container_01.rs index aa757d9160..a373109869 100644 --- a/sdk/storage_blobs/examples/container_01.rs +++ b/sdk/storage_blobs/examples/container_01.rs @@ -16,7 +16,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let container_client = storage_client.container_client(container_name); let mut metadata = Metadata::new(); diff --git a/sdk/storage_blobs/examples/container_and_blob.rs b/sdk/storage_blobs/examples/container_and_blob.rs index 3af825f932..1965e01d6b 100644 --- a/sdk/storage_blobs/examples/container_and_blob.rs +++ b/sdk/storage_blobs/examples/container_and_blob.rs @@ -16,7 +16,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let container_client = storage_client.container_client(&container_name); // create container diff --git a/sdk/storage_blobs/examples/copy_blob.rs b/sdk/storage_blobs/examples/copy_blob.rs index b03051dc0a..4f3c05ef36 100644 --- a/sdk/storage_blobs/examples/copy_blob.rs +++ b/sdk/storage_blobs/examples/copy_blob.rs @@ -28,15 +28,22 @@ async fn main() -> azure_core::Result<()> { .nth(4) .expect("please specify destination blob name as fourth command line parameter"); - let source_storage_client = StorageClient::new_access_key(&source_account, &source_access_key); + let source_storage_client = StorageClient::new_access_key( + &source_account, + &source_access_key, + StorageOptions::default(), + ); let source_blob = source_storage_client .container_client(&source_container_name) .blob_client(&source_blob_name); - let destination_blob = - StorageClient::new_access_key(&destination_account, &destination_access_key) - .container_client(&destination_container_name) - .blob_client(&destination_blob_name); + let destination_blob = StorageClient::new_access_key( + &destination_account, + &destination_access_key, + StorageOptions::default(), + ) + .container_client(&destination_container_name) + .blob_client(&destination_blob_name); // let's get a SAS key for the source let sas_url = { diff --git a/sdk/storage_blobs/examples/copy_blob_from_url.rs b/sdk/storage_blobs/examples/copy_blob_from_url.rs index 6b59828877..93f0b525cf 100644 --- a/sdk/storage_blobs/examples/copy_blob_from_url.rs +++ b/sdk/storage_blobs/examples/copy_blob_from_url.rs @@ -22,7 +22,8 @@ async fn main() -> azure_core::Result<()> { .nth(4) .expect("please specify destination blob name as fourth command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_client = storage_client .container_client(&destination_container) .blob_client(&destination_blob); diff --git a/sdk/storage_blobs/examples/count_blobs.rs b/sdk/storage_blobs/examples/count_blobs.rs index 5c9ae68825..e293c6af1a 100644 --- a/sdk/storage_blobs/examples/count_blobs.rs +++ b/sdk/storage_blobs/examples/count_blobs.rs @@ -14,7 +14,8 @@ async fn main() -> azure_core::Result<()> { .expect("please specify container name as command line parameter"); let container_client = - StorageClient::new_access_key(&account, &access_key).container_client(&container); + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container); let mut count: usize = 0; let mut list_blobs = container_client.list_blobs().into_stream(); diff --git a/sdk/storage_blobs/examples/device_code_flow.rs b/sdk/storage_blobs/examples/device_code_flow.rs index af5ed9a957..d3a2cb9387 100644 --- a/sdk/storage_blobs/examples/device_code_flow.rs +++ b/sdk/storage_blobs/examples/device_code_flow.rs @@ -74,6 +74,7 @@ async fn main() -> azure_core::Result<()> { let storage_client = StorageClient::new_bearer_token( &storage_account_name, authorization.access_token().secret(), + StorageOptions::default(), ); let blob_service_client = storage_client.blob_service_client(); diff --git a/sdk/storage_blobs/examples/list_blobs_00.rs b/sdk/storage_blobs/examples/list_blobs_00.rs index 95c3442e8b..d8672d5f6e 100644 --- a/sdk/storage_blobs/examples/list_blobs_00.rs +++ b/sdk/storage_blobs/examples/list_blobs_00.rs @@ -16,7 +16,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service = storage_client.blob_service_client(); let container_client = storage_client.container_client(&container_name); diff --git a/sdk/storage_blobs/examples/list_blobs_01.rs b/sdk/storage_blobs/examples/list_blobs_01.rs index 90f9720224..652b63d3a7 100644 --- a/sdk/storage_blobs/examples/list_blobs_01.rs +++ b/sdk/storage_blobs/examples/list_blobs_01.rs @@ -15,7 +15,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service_client = storage_client.blob_service_client(); let container_client = storage_client.container_client(&container_name); diff --git a/sdk/storage_blobs/examples/list_blobs_02.rs b/sdk/storage_blobs/examples/list_blobs_02.rs index c5d2917e8b..8084ab2259 100644 --- a/sdk/storage_blobs/examples/list_blobs_02.rs +++ b/sdk/storage_blobs/examples/list_blobs_02.rs @@ -14,7 +14,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify a non-existing container name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); create_container_and_list(storage_client, &container_name).await?; diff --git a/sdk/storage_blobs/examples/list_containers2.rs b/sdk/storage_blobs/examples/list_containers2.rs index b45bfd4c5b..6655b8bf47 100644 --- a/sdk/storage_blobs/examples/list_containers2.rs +++ b/sdk/storage_blobs/examples/list_containers2.rs @@ -17,7 +17,8 @@ async fn main() -> azure_core::Result<()> { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service_client = storage_client.blob_service_client(); let response = blob_service_client diff --git a/sdk/storage_blobs/examples/list_containers_and_blobs.rs b/sdk/storage_blobs/examples/list_containers_and_blobs.rs index cdd7f0fb84..42b4cb2ae6 100644 --- a/sdk/storage_blobs/examples/list_containers_and_blobs.rs +++ b/sdk/storage_blobs/examples/list_containers_and_blobs.rs @@ -10,7 +10,8 @@ async fn main() -> azure_core::Result<()> { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service_client = storage_client.blob_service_client(); let mut stream = blob_service_client.list_containers().into_stream(); diff --git a/sdk/storage_blobs/examples/list_containers_no_retry.rs b/sdk/storage_blobs/examples/list_containers_no_retry.rs new file mode 100644 index 0000000000..e20fc17fa6 --- /dev/null +++ b/sdk/storage_blobs/examples/list_containers_no_retry.rs @@ -0,0 +1,30 @@ +use azure_core::{ClientOptions, RetryMode, RetryOptions}; +use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; +use futures::StreamExt; + +#[tokio::main] +async fn main() -> azure_core::Result<()> { + // First we retrieve the account name and access key from environment variables. + let account = + std::env::var("STORAGE_ACCOUNT").expect("Set env variable STORAGE_ACCOUNT first!"); + let access_key = + std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); + + let client_options = + ClientOptions::default().retry(RetryOptions::default().mode(RetryMode::None)); + let options = StorageOptions::default().client_options(client_options); + + let storage_client = StorageClient::new_access_key(&account, &access_key, options); + let blob_service_client = storage_client.blob_service_client(); + let mut stream = blob_service_client.list_containers().into_stream(); + + while let Some(entry) = stream.next().await { + let entry = entry?; + for container in entry.containers { + println!("container: {}", container.name); + } + } + + Ok(()) +} diff --git a/sdk/storage_blobs/examples/missing_blob.rs b/sdk/storage_blobs/examples/missing_blob.rs index 55b9ab239e..14385c1761 100644 --- a/sdk/storage_blobs/examples/missing_blob.rs +++ b/sdk/storage_blobs/examples/missing_blob.rs @@ -14,7 +14,8 @@ async fn main() -> azure_core::Result<()> { let container_name = format!("example-{}", Uuid::new_v4()); let blob_name = format!("missing-{}.txt", Uuid::new_v4()); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let container_client = storage_client.container_client(&container_name); println!("creating container {}", container_name); container_client.create().into_future().await?; diff --git a/sdk/storage_blobs/examples/put_append_blob_00.rs b/sdk/storage_blobs/examples/put_append_blob_00.rs index 699667cf2c..38dd5ce251 100644 --- a/sdk/storage_blobs/examples/put_append_blob_00.rs +++ b/sdk/storage_blobs/examples/put_append_blob_00.rs @@ -22,9 +22,10 @@ async fn main() -> azure_core::Result<()> { .nth(2) .expect("please specify blob name as command line parameter"); - let blob_client = StorageClient::new_access_key(&account, &access_key) - .container_client(&container) - .blob_client(&blob_name); + let blob_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container) + .blob_client(&blob_name); //let data = b"something"; diff --git a/sdk/storage_blobs/examples/put_block_blob_00.rs b/sdk/storage_blobs/examples/put_block_blob_00.rs index 1feee040d4..40cb3a91ea 100644 --- a/sdk/storage_blobs/examples/put_block_blob_00.rs +++ b/sdk/storage_blobs/examples/put_block_blob_00.rs @@ -23,9 +23,10 @@ async fn main() -> azure_core::Result<()> { .nth(2) .expect("please specify blob name as command line parameter"); - let blob_client = StorageClient::new_access_key(&account, &access_key) - .container_client(&container) - .blob_client(&blob_name); + let blob_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container) + .blob_client(&blob_name); let data = Bytes::from_static(b"something"); diff --git a/sdk/storage_blobs/examples/put_page_blob_00.rs b/sdk/storage_blobs/examples/put_page_blob_00.rs index 269b21ce9e..fc132bce5e 100644 --- a/sdk/storage_blobs/examples/put_page_blob_00.rs +++ b/sdk/storage_blobs/examples/put_page_blob_00.rs @@ -23,9 +23,10 @@ async fn main() -> azure_core::Result<()> { .nth(2) .expect("please specify blob name as command line parameter"); - let blob_client = StorageClient::new_access_key(&account, &access_key) - .container_client(&container_name) - .blob_client(&blob_name); + let blob_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container_name) + .blob_client(&blob_name); let data = Bytes::from_static(&[51; 2000]); diff --git a/sdk/storage_blobs/examples/set_blob_properties_00.rs b/sdk/storage_blobs/examples/set_blob_properties_00.rs index 2603dda6b5..1dace07fd3 100644 --- a/sdk/storage_blobs/examples/set_blob_properties_00.rs +++ b/sdk/storage_blobs/examples/set_blob_properties_00.rs @@ -18,7 +18,8 @@ async fn main() -> azure_core::Result<()> { .nth(2) .expect("please specify blob name as command line parameter"); - let storage_client = StorageClient::new_access_key(&account, &master_key); + let storage_client = + StorageClient::new_access_key(&account, &master_key, StorageOptions::default()); // this is how you would use the SAS token: // let storage_client = StorageAccountClient::new_sas_token(http_client.clone(), &account, diff --git a/sdk/storage_blobs/examples/shared_access_signature.rs b/sdk/storage_blobs/examples/shared_access_signature.rs index 00ee9d2e38..c285c6641a 100644 --- a/sdk/storage_blobs/examples/shared_access_signature.rs +++ b/sdk/storage_blobs/examples/shared_access_signature.rs @@ -25,7 +25,8 @@ fn code() -> azure_core::Result<()> { let now = Utc::now() - Duration::minutes(15); let later = now + Duration::hours(1); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let container_client = storage_client.container_client(&container_name); let blob_client = container_client.blob_client(&blob_name); diff --git a/sdk/storage_blobs/examples/stream_blob_00.rs b/sdk/storage_blobs/examples/stream_blob_00.rs index 253a7d402a..2057316e72 100644 --- a/sdk/storage_blobs/examples/stream_blob_00.rs +++ b/sdk/storage_blobs/examples/stream_blob_00.rs @@ -23,9 +23,10 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as first command line parameter"); - let blob_client = StorageClient::new_access_key(&account, &access_key) - .container_client(&container_name) - .blob_client(file_name); + let blob_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container_name) + .blob_client(file_name); let string = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"; diff --git a/sdk/storage_blobs/examples/stream_blob_01.rs b/sdk/storage_blobs/examples/stream_blob_01.rs index 1d1ab3625b..53ee70578f 100644 --- a/sdk/storage_blobs/examples/stream_blob_01.rs +++ b/sdk/storage_blobs/examples/stream_blob_01.rs @@ -22,9 +22,10 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("please specify container name as first command line parameter"); - let blob_client = StorageClient::new_access_key(&account, &access_key) - .container_client(&container_name) - .blob_client(file_name); + let blob_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) + .container_client(&container_name) + .blob_client(file_name); let mut stream = blob_client.get().into_stream(); while let Some(res) = stream.next().await { diff --git a/sdk/storage_blobs/tests/append_blob.rs b/sdk/storage_blobs/tests/append_blob.rs index ce89beccbb..5382e6e0da 100644 --- a/sdk/storage_blobs/tests/append_blob.rs +++ b/sdk/storage_blobs/tests/append_blob.rs @@ -19,7 +19,7 @@ async fn put_append_blob() { let container_name: &'static str = "rust-upload-test"; let _data = b"abcdef"; - let storage = StorageClient::new_access_key(&account, &access_key); + let storage = StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service = storage.blob_service_client(); let container = storage.container_client(container_name); let blob = container.blob_client(blob_name); diff --git a/sdk/storage_blobs/tests/blob.rs b/sdk/storage_blobs/tests/blob.rs index bcd8c19abc..3acb8bf79f 100644 --- a/sdk/storage_blobs/tests/blob.rs +++ b/sdk/storage_blobs/tests/blob.rs @@ -493,5 +493,5 @@ fn initialize() -> StorageClient { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - StorageClient::new_access_key(&account, &access_key) + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) } diff --git a/sdk/storage_blobs/tests/container.rs b/sdk/storage_blobs/tests/container.rs index bc3dcff55c..1cd40e5142 100644 --- a/sdk/storage_blobs/tests/container.rs +++ b/sdk/storage_blobs/tests/container.rs @@ -71,5 +71,5 @@ fn initialize() -> StorageClient { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - StorageClient::new_access_key(&account, &access_key) + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) } diff --git a/sdk/storage_blobs/tests/page_blob.rs b/sdk/storage_blobs/tests/page_blob.rs index a151dbdf19..a3ae58b54b 100644 --- a/sdk/storage_blobs/tests/page_blob.rs +++ b/sdk/storage_blobs/tests/page_blob.rs @@ -56,5 +56,5 @@ fn initialize() -> StorageClient { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - StorageClient::new_access_key(&account, &access_key) + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()) } diff --git a/sdk/storage_blobs/tests/stream_blob00.rs b/sdk/storage_blobs/tests/stream_blob00.rs index ec02cf0ecc..ffe9c5661b 100644 --- a/sdk/storage_blobs/tests/stream_blob00.rs +++ b/sdk/storage_blobs/tests/stream_blob00.rs @@ -21,7 +21,7 @@ async fn code() -> azure_core::Result<()> { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - let storage = StorageClient::new_access_key(&account, &access_key); + let storage = StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service = storage.blob_service_client(); let container = storage.container_client(&container_name); let blob = container.blob_client(file_name); diff --git a/sdk/storage_blobs/tests/stream_list_blobs.rs b/sdk/storage_blobs/tests/stream_list_blobs.rs index 1bd59f28df..67833a56a5 100644 --- a/sdk/storage_blobs/tests/stream_list_blobs.rs +++ b/sdk/storage_blobs/tests/stream_list_blobs.rs @@ -13,7 +13,7 @@ async fn stream_list_blobs() { let container_name = "streamlistblobs235xx752zdve"; - let storage = StorageClient::new_access_key(&account, &access_key); + let storage = StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let blob_service = storage.blob_service_client(); let container = storage.container_client(container_name); diff --git a/sdk/storage_queues/examples/delete_message.rs b/sdk/storage_queues/examples/delete_message.rs index 832c7537cc..ff8871f896 100644 --- a/sdk/storage_queues/examples/delete_message.rs +++ b/sdk/storage_queues/examples/delete_message.rs @@ -17,7 +17,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("Please pass the queue name as first parameter"); - let storage_account = StorageClient::new_access_key(&account, &access_key); + let storage_account = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let queue = storage_account.queue_client(queue_name); diff --git a/sdk/storage_queues/examples/get_messages.rs b/sdk/storage_queues/examples/get_messages.rs index 6ccfe3b388..52e8799a60 100644 --- a/sdk/storage_queues/examples/get_messages.rs +++ b/sdk/storage_queues/examples/get_messages.rs @@ -17,7 +17,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("Please pass the queue name as first parameter"); - let storage_account = StorageClient::new_access_key(&account, &access_key); + let storage_account = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let queue = storage_account.queue_client(queue_name); diff --git a/sdk/storage_queues/examples/list_queues.rs b/sdk/storage_queues/examples/list_queues.rs index 29c672bb31..b60a502478 100644 --- a/sdk/storage_queues/examples/list_queues.rs +++ b/sdk/storage_queues/examples/list_queues.rs @@ -11,7 +11,8 @@ async fn main() -> azure_core::Result<()> { let access_key = std::env::var("STORAGE_ACCESS_KEY").expect("Set env variable STORAGE_ACCESS_KEY first!"); - let storage_account = StorageClient::new_access_key(&account, &access_key); + let storage_account = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let queue_service = storage_account.queue_service_client(); diff --git a/sdk/storage_queues/examples/peek_messages.rs b/sdk/storage_queues/examples/peek_messages.rs index 4fe69841f2..c6f5da024a 100644 --- a/sdk/storage_queues/examples/peek_messages.rs +++ b/sdk/storage_queues/examples/peek_messages.rs @@ -16,7 +16,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("Please pass the queue name as first parameter"); - let storage_account = StorageClient::new_access_key(&account, &access_key); + let storage_account = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let queue = storage_account.queue_client(queue_name); println!("{:#?}", queue); diff --git a/sdk/storage_queues/examples/put_message.rs b/sdk/storage_queues/examples/put_message.rs index ade27c6449..5d17f8af7b 100644 --- a/sdk/storage_queues/examples/put_message.rs +++ b/sdk/storage_queues/examples/put_message.rs @@ -16,7 +16,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("Please pass the queue name as first parameter"); - let storage_account = StorageClient::new_access_key(&account, &access_key); + let storage_account = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let queue = storage_account.queue_client(queue_name); diff --git a/sdk/storage_queues/examples/queue_create.rs b/sdk/storage_queues/examples/queue_create.rs index f3523ec7b3..69dbe6a82b 100644 --- a/sdk/storage_queues/examples/queue_create.rs +++ b/sdk/storage_queues/examples/queue_create.rs @@ -18,7 +18,8 @@ async fn main() -> azure_core::Result<()> { .nth(1) .expect("Please pass the queue name as first parameter"); - let storage_account = StorageClient::new_access_key(&account, &access_key); + let storage_account = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let queue = storage_account.queue_client(queue_name); diff --git a/sdk/storage_queues/tests/queue.rs b/sdk/storage_queues/tests/queue.rs index f6ae255571..3cd3598aa4 100644 --- a/sdk/storage_queues/tests/queue.rs +++ b/sdk/storage_queues/tests/queue.rs @@ -16,7 +16,8 @@ async fn queue_create_put_and_get() -> azure_core::Result<()> { let queue_name = format!("sdk-{}", Uuid::new_v4()); - let storage_client = StorageClient::new_access_key(&account, &access_key); + let storage_client = + StorageClient::new_access_key(&account, &access_key, StorageOptions::default()); let queue_service_client = storage_client.queue_service_client();