From e9ba45af9dddf76345ca4cb2c8bb0d6ef512b137 Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 7 Nov 2021 21:36:38 +0000 Subject: [PATCH 01/13] Created azure_storage_blobs crate from azure_storage::blob. --- sdk/core/src/macros.rs | 4 +- sdk/identity/Cargo.toml | 1 + sdk/identity/examples/device_code_flow.rs | 4 +- sdk/storage/Cargo.toml | 144 +++++++++--------- sdk/storage/src/blob/prelude.rs | 11 -- .../src/core/clients/storage_client.rs | 13 +- sdk/storage/src/core/mod.rs | 4 +- sdk/storage/src/lib.rs | 8 +- sdk/storage_blobs/Cargo.toml | 38 +++++ sdk/storage_blobs/README.md | 12 ++ .../examples/blob_00.rs | 2 +- .../examples/blob_01.rs | 2 +- .../examples/blob_02_bearer_token.rs | 2 +- .../examples/blob_04.rs | 2 +- .../examples/blob_05_default_credential.rs | 2 +- .../examples/blob_range.rs | 2 +- .../examples/connection_string.rs | 5 +- .../examples/connection_string_builder.rs | 0 .../examples/container_00.rs | 12 +- .../examples/container_01.rs | 5 +- .../examples/container_and_blob.rs | 2 +- .../examples/copy_blob.rs | 2 +- .../examples/copy_blob_from_url.rs | 2 +- .../examples/count_blobs.rs | 2 +- .../examples/emulator_00.rs | 2 +- .../examples/list_blobs_00.rs | 12 +- .../examples/list_blobs_01.rs | 5 +- .../examples/list_blobs_02.rs | 6 +- .../examples/list_containers2.rs | 19 ++- .../examples/put_append_blob_00.rs | 2 +- .../examples/put_block_blob_00.rs | 2 +- .../examples/put_page_blob_00.rs | 2 +- .../examples/sas00.rs_toreenable | 0 .../examples/shared_access_signature.rs | 2 +- .../examples/stream_blob_00.rs | 2 +- .../examples/stream_blob_01.rs | 4 +- .../blob => storage_blobs/src}/access_tier.rs | 0 .../src}/blob/blob_block_type.rs | 0 .../src}/blob/blob_block_with_size.rs | 2 +- .../src}/blob/block_list.rs | 2 +- .../src}/blob/block_list_type.rs | 0 .../src}/blob/block_with_size_list.rs | 4 +- .../src}/blob/lease_blob_options.rs | 0 .../blob => storage_blobs/src}/blob/mod.rs | 27 ++-- .../blob/requests/acquire_lease_builder.rs | 4 +- .../blob/requests/append_block_builder.rs | 4 +- .../src}/blob/requests/break_lease_builder.rs | 4 +- .../blob/requests/change_lease_builder.rs | 4 +- .../src}/blob/requests/clear_page_builder.rs | 4 +- .../src}/blob/requests/copy_blob_builder.rs | 4 +- .../requests/copy_blob_from_url_builder.rs | 4 +- .../src}/blob/requests/delete_blob_builder.rs | 4 +- .../requests/delete_blob_snapshot_builder.rs | 4 +- .../requests/delete_blob_version_builder.rs | 4 +- .../src}/blob/requests/get_blob_builder.rs | 4 +- .../requests/get_blob_metadata_builder.rs | 4 +- .../requests/get_blob_properties_builder.rs | 4 +- .../blob/requests/get_block_list_builder.rs | 6 +- .../src}/blob/requests/mod.rs | 0 .../blob/requests/put_append_blob_builder.rs | 4 +- .../blob/requests/put_block_blob_builder.rs | 4 +- .../src}/blob/requests/put_block_builder.rs | 4 +- .../blob/requests/put_block_list_builder.rs | 4 +- .../blob/requests/put_page_blob_builder.rs | 4 +- .../blob/requests/release_lease_builder.rs | 4 +- .../src}/blob/requests/renew_lease_builder.rs | 4 +- .../requests/set_blob_metadata_builder.rs | 4 +- .../src}/blob/requests/source_content_md5.rs | 0 .../src}/blob/requests/update_page_builder.rs | 4 +- .../responses/acquire_blob_lease_response.rs | 2 +- .../responses/break_blob_lease_response.rs | 2 +- .../responses/change_blob_lease_response.rs | 2 +- .../blob/responses/clear_page_response.rs | 2 +- .../responses/copy_blob_from_url_response.rs | 8 +- .../src}/blob/responses/copy_blob_response.rs | 4 +- .../blob/responses/delete_blob_response.rs | 4 +- .../responses/get_blob_metadata_response.rs | 0 .../responses/get_blob_properties_response.rs | 2 +- .../src}/blob/responses/get_blob_response.rs | 2 +- .../blob/responses/get_block_list_response.rs | 2 +- .../blob/responses/list_blobs_response.rs | 4 +- .../src}/blob/responses/mod.rs | 0 .../src}/blob/responses/put_blob_response.rs | 0 .../blob/responses/put_block_blob_response.rs | 2 +- .../blob/responses/put_block_list_response.rs | 4 +- .../src}/blob/responses/put_block_response.rs | 2 +- .../responses/release_blob_lease_response.rs | 2 +- .../responses/renew_blob_lease_response.rs | 2 +- .../responses/set_blob_metadata_response.rs | 0 .../blob/responses/update_page_response.rs | 4 +- .../src}/blob_content_md5.rs | 0 .../blob => storage_blobs/src}/block_id.rs | 0 .../src/clients/base_blob_service.rs | 33 ++++ .../src}/clients/blob_client.rs | 16 +- .../src}/clients/blob_lease_client.rs | 6 +- .../src}/clients/container_client.rs | 10 +- .../src}/clients/container_lease_client.rs | 6 +- .../blob => storage_blobs/src}/clients/mod.rs | 2 + .../src}/condition_append_position.rs | 0 .../src}/condition_max_size.rs | 0 .../src}/container/mod.rs | 11 +- .../requests/acquire_lease_builder.rs | 2 +- .../container/requests/break_lease_builder.rs | 2 +- .../src}/container/requests/create_builder.rs | 2 +- .../src}/container/requests/delete_builder.rs | 2 +- .../container/requests/get_acl_builder.rs | 2 +- .../requests/get_properties_builder.rs | 2 +- .../container/requests/list_blobs_builder.rs | 4 +- .../requests/list_containers_builder.rs | 2 +- .../src}/container/requests/mod.rs | 0 .../requests/release_lease_builder.rs | 2 +- .../container/requests/renew_lease_builder.rs | 2 +- .../container/requests/set_acl_builder.rs | 3 +- .../responses/acquire_lease_response.rs | 2 +- .../responses/break_lease_response.rs | 2 +- .../container/responses/get_acl_response.rs | 6 +- .../responses/get_properties_response.rs | 0 .../responses/list_containers_response.rs | 0 .../src}/container/responses/mod.rs | 0 .../responses/release_lease_response.rs | 2 +- .../responses/renew_lease_response.rs | 0 .../src}/delete_snapshot_method.rs | 0 .../src/blob => storage_blobs/src}/hash.rs | 2 +- .../src/blob => storage_blobs/src}/headers.rs | 0 .../src}/incomplete_vector.rs | 0 .../blob/mod.rs => storage_blobs/src/lib.rs} | 11 +- sdk/storage_blobs/src/prelude.rs | 11 ++ .../blob => storage_blobs/src}/snapshot.rs | 0 .../blob => storage_blobs/src}/version_id.rs | 0 129 files changed, 382 insertions(+), 281 deletions(-) delete mode 100644 sdk/storage/src/blob/prelude.rs create mode 100644 sdk/storage_blobs/Cargo.toml create mode 100644 sdk/storage_blobs/README.md rename sdk/{storage => storage_blobs}/examples/blob_00.rs (98%) rename sdk/{storage => storage_blobs}/examples/blob_01.rs (97%) rename sdk/{storage => storage_blobs}/examples/blob_02_bearer_token.rs (97%) rename sdk/{storage => storage_blobs}/examples/blob_04.rs (98%) rename sdk/{storage => storage_blobs}/examples/blob_05_default_credential.rs (97%) rename sdk/{storage => storage_blobs}/examples/blob_range.rs (98%) rename sdk/{storage => storage_blobs}/examples/connection_string.rs (93%) rename sdk/{storage => storage_blobs}/examples/connection_string_builder.rs (100%) rename sdk/{storage => storage_blobs}/examples/container_00.rs (81%) rename sdk/{storage => storage_blobs}/examples/container_01.rs (96%) rename sdk/{storage => storage_blobs}/examples/container_and_blob.rs (98%) rename sdk/{storage => storage_blobs}/examples/copy_blob.rs (98%) rename sdk/{storage => storage_blobs}/examples/copy_blob_from_url.rs (97%) rename sdk/{storage => storage_blobs}/examples/count_blobs.rs (96%) rename sdk/{storage => storage_blobs}/examples/emulator_00.rs (94%) rename sdk/{storage => storage_blobs}/examples/list_blobs_00.rs (86%) rename sdk/{storage => storage_blobs}/examples/list_blobs_01.rs (96%) rename sdk/{storage => storage_blobs}/examples/list_blobs_02.rs (92%) rename sdk/{storage => storage_blobs}/examples/list_containers2.rs (70%) rename sdk/{storage => storage_blobs}/examples/put_append_blob_00.rs (98%) rename sdk/{storage => storage_blobs}/examples/put_block_blob_00.rs (98%) rename sdk/{storage => storage_blobs}/examples/put_page_blob_00.rs (98%) rename sdk/{storage => storage_blobs}/examples/sas00.rs_toreenable (100%) rename sdk/{storage => storage_blobs}/examples/shared_access_signature.rs (98%) rename sdk/{storage => storage_blobs}/examples/stream_blob_00.rs (99%) rename sdk/{storage => storage_blobs}/examples/stream_blob_01.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/access_tier.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/blob_block_type.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/blob_block_with_size.rs (78%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/block_list.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/block_list_type.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/block_with_size_list.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/lease_blob_options.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/mod.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/acquire_lease_builder.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/append_block_builder.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/break_lease_builder.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/change_lease_builder.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/clear_page_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/copy_blob_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/copy_blob_from_url_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/delete_blob_builder.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/delete_blob_snapshot_builder.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/delete_blob_version_builder.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/get_blob_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/get_blob_metadata_builder.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/get_blob_properties_builder.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/get_block_list_builder.rs (94%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/mod.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/put_append_blob_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/put_block_blob_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/put_block_builder.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/put_block_list_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/put_page_blob_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/release_lease_builder.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/renew_lease_builder.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/set_blob_metadata_builder.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/source_content_md5.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/requests/update_page_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/acquire_blob_lease_response.rs (87%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/break_blob_lease_response.rs (86%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/change_blob_lease_response.rs (87%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/clear_page_response.rs (87%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/copy_blob_from_url_response.rs (86%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/copy_blob_response.rs (92%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/delete_blob_response.rs (83%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/get_blob_metadata_response.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/get_blob_properties_response.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/get_blob_response.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/get_block_list_response.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/list_blobs_response.rs (99%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/mod.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/put_blob_response.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/put_block_blob_response.rs (93%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/put_block_list_response.rs (93%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/put_block_response.rs (92%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/release_blob_lease_response.rs (83%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/renew_blob_lease_response.rs (87%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/set_blob_metadata_response.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/blob/responses/update_page_response.rs (93%) rename sdk/{storage/src/blob => storage_blobs/src}/blob_content_md5.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/block_id.rs (100%) create mode 100644 sdk/storage_blobs/src/clients/base_blob_service.rs rename sdk/{storage/src/blob => storage_blobs/src}/clients/blob_client.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/clients/blob_lease_client.rs (96%) rename sdk/{storage/src/blob => storage_blobs/src}/clients/container_client.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/clients/container_lease_client.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/clients/mod.rs (79%) rename sdk/{storage/src/blob => storage_blobs/src}/condition_append_position.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/condition_max_size.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/container/mod.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/acquire_lease_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/break_lease_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/create_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/delete_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/get_acl_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/get_properties_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/list_blobs_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/list_containers_builder.rs (99%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/mod.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/release_lease_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/renew_lease_builder.rs (98%) rename sdk/{storage/src/blob => storage_blobs/src}/container/requests/set_acl_builder.rs (97%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/acquire_lease_response.rs (87%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/break_lease_response.rs (87%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/get_acl_response.rs (95%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/get_properties_response.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/list_containers_response.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/mod.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/release_lease_response.rs (84%) rename sdk/{storage/src/blob => storage_blobs/src}/container/responses/renew_lease_response.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/delete_snapshot_method.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/hash.rs (94%) rename sdk/{storage/src/blob => storage_blobs/src}/headers.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/incomplete_vector.rs (100%) rename sdk/{storage/src/blob/mod.rs => storage_blobs/src/lib.rs} (90%) create mode 100644 sdk/storage_blobs/src/prelude.rs rename sdk/{storage/src/blob => storage_blobs/src}/snapshot.rs (100%) rename sdk/{storage/src/blob => storage_blobs/src}/version_id.rs (100%) diff --git a/sdk/core/src/macros.rs b/sdk/core/src/macros.rs index fa3ef976e8..8e81c86c74 100644 --- a/sdk/core/src/macros.rs +++ b/sdk/core/src/macros.rs @@ -102,7 +102,7 @@ macro_rules! create_enum { } impl<'de> serde::Deserialize<'de> for $name { - fn deserialize(deserializer: D) -> Result + fn deserialize(deserializer: D) -> ::core::result::Result where D: serde::Deserializer<'de>, { @@ -118,7 +118,7 @@ macro_rules! create_enum { } impl serde::Serialize for $name { - fn serialize(&self, s: S) -> Result + fn serialize(&self, s: S) -> ::core::result::Result where S: serde::Serializer { return s.serialize_str(&self.to_string()) } diff --git a/sdk/identity/Cargo.toml b/sdk/identity/Cargo.toml index aaea0e3d7a..c062c5fca4 100644 --- a/sdk/identity/Cargo.toml +++ b/sdk/identity/Cargo.toml @@ -29,6 +29,7 @@ async-trait = "0.1" [dev-dependencies] tokio = { version = "1.0", features = ["macros"] } azure_storage = { version = "0.1", path = "../storage" } +azure_storage_blobs = { version = "0.1", path = "../storage_blobs" } env_logger = "0.8" serde_test = "1" diff --git a/sdk/identity/examples/device_code_flow.rs b/sdk/identity/examples/device_code_flow.rs index 41950eb22f..f9d1e706e9 100644 --- a/sdk/identity/examples/device_code_flow.rs +++ b/sdk/identity/examples/device_code_flow.rs @@ -1,6 +1,7 @@ use azure_identity::device_code_flow::{self, DeviceCodeResponse}; use azure_identity::refresh_token; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use oauth2::ClientId; use std::env; @@ -83,10 +84,11 @@ async fn main() -> Result<(), Box> { authorization.access_token().secret() as &str, ) .as_storage_client(); + let base_blob_service = storage_client.as_base_blob_service(); // now we enumerate the containers in the // specified storage account. - let containers = storage_client.list_containers().execute().await?; + let containers = base_blob_service.list_containers().execute().await?; println!("\nList containers completed succesfully: {:?}", containers); // now let's refresh the token, if available diff --git a/sdk/storage/Cargo.toml b/sdk/storage/Cargo.toml index 8c893dc804..92fb337bf5 100644 --- a/sdk/storage/Cargo.toml +++ b/sdk/storage/Cargo.toml @@ -60,78 +60,78 @@ required-features = ["table"] [[example]] name="account00" required-features = ["account"] -[[example]] -name="blob_00" -required-features=["blob"] -[[example]] -name="blob_01" -required-features=["blob"] -[[example]] -name="blob_02_bearer_token" -required-features=["blob"] -[[example]] -name="blob_04" -required-features=["blob"] -[[example]] -name="blob_05_default_credential" -required-features=["blob"] -[[example]] -name="blob_range" -required-features=["blob"] -[[example]] -name="connection_string_builder" -required-features=["blob"] -[[example]] -name="connection_string" -required-features=["blob"] -[[example]] -name="container_00" -required-features=["blob"] -[[example]] -name="container_01" -required-features=["blob"] -[[example]] -name="container_and_blob" -required-features=["blob"] -[[example]] -name="copy_blob_from_url" -required-features=["blob"] -[[example]] -name="copy_blob" -required-features=["blob"] -[[example]] -name="count_blobs" -required-features=["blob"] -[[example]] -name="emulator_00" -required-features=["blob"] -[[example]] -name="list_blobs_00" -required-features=["blob"] -[[example]] -name="list_blobs_01" -required-features=["blob"] -[[example]] -name="list_containers2" -required-features=["blob"] -[[example]] -name="put_append_blob_00" -required-features=["blob"] -[[example]] -name="put_block_blob_00" -required-features=["blob"] -[[example]] -name="put_page_blob_00" -required-features=["blob"] -[[example]] -name="shared_access_signature" -required-features=["blob"] -[[example]] -name="stream_blob_00" -required-features=["blob"] -[[example]] -name="stream_blob_01" -required-features=["blob"] +# [[example]] +# name="blob_00" +# required-features=["blob"] +# [[example]] +# name="blob_01" +# required-features=["blob"] +# [[example]] +# name="blob_02_bearer_token" +# required-features=["blob"] +# [[example]] +# name="blob_04" +# required-features=["blob"] +# [[example]] +# name="blob_05_default_credential" +# required-features=["blob"] +# [[example]] +# name="blob_range" +# required-features=["blob"] +# [[example]] +# name="connection_string_builder" +# required-features=["blob"] +# [[example]] +# name="connection_string" +# required-features=["blob"] +# [[example]] +# name="container_00" +# required-features=["blob"] +# [[example]] +# name="container_01" +# required-features=["blob"] +# [[example]] +# name="container_and_blob" +# required-features=["blob"] +# [[example]] +# name="copy_blob_from_url" +# required-features=["blob"] +# [[example]] +# name="copy_blob" +# required-features=["blob"] +# [[example]] +# name="count_blobs" +# required-features=["blob"] +# [[example]] +# name="emulator_00" +# required-features=["blob"] +# [[example]] +# name="list_blobs_00" +# required-features=["blob"] +# [[example]] +# name="list_blobs_01" +# required-features=["blob"] +# [[example]] +# name="list_containers2" +# required-features=["blob"] +# [[example]] +# name="put_append_blob_00" +# required-features=["blob"] +# [[example]] +# name="put_block_blob_00" +# required-features=["blob"] +# [[example]] +# name="put_page_blob_00" +# required-features=["blob"] +# [[example]] +# name="shared_access_signature" +# required-features=["blob"] +# [[example]] +# name="stream_blob_00" +# required-features=["blob"] +# [[example]] +# name="stream_blob_01" +# required-features=["blob"] [[example]] name="data_lake_00_file_system" required-features=["data_lake"] diff --git a/sdk/storage/src/blob/prelude.rs b/sdk/storage/src/blob/prelude.rs deleted file mode 100644 index 311af420f5..0000000000 --- a/sdk/storage/src/blob/prelude.rs +++ /dev/null @@ -1,11 +0,0 @@ -pub use super::blob::{Blob, BlobBlockType, BlockList, BlockListType}; -pub use super::container::PublicAccess; -pub use crate::blob::clients::{ - AsBlobClient, AsBlobLeaseClient, AsContainerClient, AsContainerLeaseClient, BlobClient, - BlobLeaseClient, ContainerClient, ContainerLeaseClient, -}; -pub use crate::{ - AccessTier, BlobContentMD5, BlobVersioning, BlockId, ConditionAppendPosition, ConditionMaxSize, - DeleteSnapshotsMethod, Hash, RehydratePriority, Snapshot, StoredAccessPolicy, - StoredAccessPolicyList, VersionId, -}; diff --git a/sdk/storage/src/core/clients/storage_client.rs b/sdk/storage/src/core/clients/storage_client.rs index d7c885b395..b51b7f8da7 100644 --- a/sdk/storage/src/core/clients/storage_client.rs +++ b/sdk/storage/src/core/clients/storage_client.rs @@ -51,10 +51,7 @@ impl StorageClient { Ok(url) } - pub(crate) fn blob_url_with_segments<'a, I>( - &'a self, - segments: I, - ) -> Result + pub fn blob_url_with_segments<'a, I>(&'a self, segments: I) -> Result where I: IntoIterator, { @@ -88,10 +85,10 @@ impl StorageClient { crate::account::requests::FindBlobsByTagsBuilder::new(self) } - #[cfg(feature = "blob")] - pub fn list_containers(&self) -> crate::container::requests::ListContainersBuilder { - crate::container::requests::ListContainersBuilder::new(self) - } + // #[cfg(feature = "blob")] + // pub fn list_containers(&self) -> crate::container::requests::ListContainersBuilder { + // crate::container::requests::ListContainersBuilder::new(self) + // } #[allow(dead_code)] pub fn prepare_request( diff --git a/sdk/storage/src/core/mod.rs b/sdk/storage/src/core/mod.rs index eeb5df2c6d..15837db5f1 100644 --- a/sdk/storage/src/core/mod.rs +++ b/sdk/storage/src/core/mod.rs @@ -15,10 +15,10 @@ pub use self::into_azure_path::IntoAzurePath; pub mod headers; pub use copy_id::{copy_id_from_headers, CopyId}; pub use copy_progress::CopyProgress; -pub(crate) mod parsing_xml; +pub mod parsing_xml; mod stored_access_policy; pub use errors::{Error, Result}; -pub(crate) mod util; +pub mod util; pub mod xml; #[derive(Debug, Clone, Eq, PartialEq, Copy, Serialize, Deserialize)] diff --git a/sdk/storage/src/lib.rs b/sdk/storage/src/lib.rs index ae7b167346..84806b3cdf 100644 --- a/sdk/storage/src/lib.rs +++ b/sdk/storage/src/lib.rs @@ -15,8 +15,8 @@ pub use self::core::{Error, Result}; #[cfg(feature = "account")] pub mod account; -#[cfg(feature = "blob")] -pub mod blob; +// #[cfg(feature = "blob")] +// pub mod blob; pub mod core; #[cfg(feature = "data_lake")] pub mod data_lake; @@ -26,8 +26,8 @@ pub mod table; pub use crate::core::*; #[cfg(feature = "account")] pub use account::*; -#[cfg(feature = "blob")] -pub use blob::*; +// #[cfg(feature = "blob")] +// pub use blob::*; #[cfg(feature = "data_lake")] pub use data_lake::*; #[cfg(feature = "table")] diff --git a/sdk/storage_blobs/Cargo.toml b/sdk/storage_blobs/Cargo.toml new file mode 100644 index 0000000000..056c0b4afe --- /dev/null +++ b/sdk/storage_blobs/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "azure_storage_blobs" +version = "0.1.0" +description = "Rust wrappers around Microsoft Azure Storage Blobs REST APIs" +readme = "README.md" +authors = ["Microsoft Corp."] +license = "MIT" +repository = "https://github.com/azure/azure-sdk-for-rust" +homepage = "https://github.com/azure/azure-sdk-for-rust" +documentation = "https://docs.rs/azure_storage_blobs" +keywords = ["sdk", "azure", "rest", "iot", "cloud"] +categories = ["api-bindings"] +edition = "2018" + +[dependencies] +azure_core = { path = "../core", version = "0.1.0" } +azure_storage = { path = "../storage", version = "0.1.0" } +base64 = "0.13" +bytes = "1.0" +chrono = { version = "0.4", features = ["serde"] } +futures = "0.3" +http = "0.2" +log = "0.4" +md5 = "0.7" +RustyXML = "0.3" +serde = { version = "1.0" } +serde_derive = "1.0" +serde_json = "1.0" +serde-xml-rs = "0.4" +uuid = { version = "0.8", features = ["v4"] } +url = "2.2" + +[dev-dependencies] +tokio = { version = "1.0", features = ["full"] } +env_logger = "0.8" +azure_identity = { path = "../identity" } +reqwest = "0.11" + diff --git a/sdk/storage_blobs/README.md b/sdk/storage_blobs/README.md new file mode 100644 index 0000000000..217dbb875b --- /dev/null +++ b/sdk/storage_blobs/README.md @@ -0,0 +1,12 @@ +# Azure SDK for Rust - Azure Messaging Queues + +Azure Messaging Queues crate for the unofficial Microsoft Azure SDK for Rust. This crate is part of a collection of crates: for more information please refer to [https://github.com/azure/azure-sdk-for-rust](https://github.com/azure/azure-sdk-for-rust). + +## Usage + +To set this crate as a dependency, add this to your Cargo.toml + +```toml +[dependencies] +azure_messaging_queues = { version = "0.1.0", git = "https://github.com/Azure/azure-sdk-for-rust" } +``` diff --git a/sdk/storage/examples/blob_00.rs b/sdk/storage_blobs/examples/blob_00.rs similarity index 98% rename from sdk/storage/examples/blob_00.rs rename to sdk/storage_blobs/examples/blob_00.rs index ee4312b183..6167f4af0d 100644 --- a/sdk/storage/examples/blob_00.rs +++ b/sdk/storage_blobs/examples/blob_00.rs @@ -1,8 +1,8 @@ #[macro_use] extern crate log; use azure_core::prelude::*; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::error::Error; diff --git a/sdk/storage/examples/blob_01.rs b/sdk/storage_blobs/examples/blob_01.rs similarity index 97% rename from sdk/storage/examples/blob_01.rs rename to sdk/storage_blobs/examples/blob_01.rs index 80725003c7..62991e2355 100644 --- a/sdk/storage/examples/blob_01.rs +++ b/sdk/storage_blobs/examples/blob_01.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; #[tokio::main] diff --git a/sdk/storage/examples/blob_02_bearer_token.rs b/sdk/storage_blobs/examples/blob_02_bearer_token.rs similarity index 97% rename from sdk/storage/examples/blob_02_bearer_token.rs rename to sdk/storage_blobs/examples/blob_02_bearer_token.rs index 8c6110a9a5..770357eb12 100644 --- a/sdk/storage/examples/blob_02_bearer_token.rs +++ b/sdk/storage_blobs/examples/blob_02_bearer_token.rs @@ -1,8 +1,8 @@ #[macro_use] extern crate log; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; #[tokio::main] diff --git a/sdk/storage/examples/blob_04.rs b/sdk/storage_blobs/examples/blob_04.rs similarity index 98% rename from sdk/storage/examples/blob_04.rs rename to sdk/storage_blobs/examples/blob_04.rs index 06616e5156..354a925b72 100644 --- a/sdk/storage/examples/blob_04.rs +++ b/sdk/storage_blobs/examples/blob_04.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use bytes::{BufMut, Bytes}; use std::error::Error; diff --git a/sdk/storage/examples/blob_05_default_credential.rs b/sdk/storage_blobs/examples/blob_05_default_credential.rs similarity index 97% rename from sdk/storage/examples/blob_05_default_credential.rs rename to sdk/storage_blobs/examples/blob_05_default_credential.rs index 6a41bb2025..1805f9ee09 100644 --- a/sdk/storage/examples/blob_05_default_credential.rs +++ b/sdk/storage_blobs/examples/blob_05_default_credential.rs @@ -3,8 +3,8 @@ extern crate log; use azure_identity::token_credentials::DefaultAzureCredential; use azure_identity::token_credentials::TokenCredential; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; #[tokio::main] diff --git a/sdk/storage/examples/blob_range.rs b/sdk/storage_blobs/examples/blob_range.rs similarity index 98% rename from sdk/storage/examples/blob_range.rs rename to sdk/storage_blobs/examples/blob_range.rs index 67947fd623..28dc6c49c4 100644 --- a/sdk/storage/examples/blob_range.rs +++ b/sdk/storage_blobs/examples/blob_range.rs @@ -1,6 +1,6 @@ use azure_core::prelude::*; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::error::Error; diff --git a/sdk/storage/examples/connection_string.rs b/sdk/storage_blobs/examples/connection_string.rs similarity index 93% rename from sdk/storage/examples/connection_string.rs rename to sdk/storage_blobs/examples/connection_string.rs index 03f044f36d..4342f4b5d4 100644 --- a/sdk/storage/examples/connection_string.rs +++ b/sdk/storage_blobs/examples/connection_string.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::error::Error; use std::num::NonZeroU32; @@ -20,8 +20,9 @@ async fn main() -> Result<(), Box> { StorageAccountClient::new_connection_string(http_client.clone(), &connection_string)? .as_storage_client(); let container = storage_account.as_container_client(&container_name); + let base_blob_service = storage_account.as_base_blob_service(); - let iv = storage_account.list_containers().execute().await?; + let iv = base_blob_service.list_containers().execute().await?; if iv .incomplete_vector diff --git a/sdk/storage/examples/connection_string_builder.rs b/sdk/storage_blobs/examples/connection_string_builder.rs similarity index 100% rename from sdk/storage/examples/connection_string_builder.rs rename to sdk/storage_blobs/examples/connection_string_builder.rs diff --git a/sdk/storage/examples/container_00.rs b/sdk/storage_blobs/examples/container_00.rs similarity index 81% rename from sdk/storage/examples/container_00.rs rename to sdk/storage_blobs/examples/container_00.rs index 4332e7a729..e9d99af854 100644 --- a/sdk/storage/examples/container_00.rs +++ b/sdk/storage_blobs/examples/container_00.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; use std::num::NonZeroU32; @@ -16,13 +16,13 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) - .as_storage_client(); - let container = storage_account.as_container_client(container_name); + let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_storage_client(); + let base_blob_service = storage.as_base_blob_service(); + let container = storage.as_container_client(container_name); let max_results = NonZeroU32::new(3).unwrap(); - let iv = storage_account + let iv = base_blob_service .list_containers() .max_results(max_results) .execute() diff --git a/sdk/storage/examples/container_01.rs b/sdk/storage_blobs/examples/container_01.rs similarity index 96% rename from sdk/storage/examples/container_01.rs rename to sdk/storage_blobs/examples/container_01.rs index bed4fa7b47..e5fc9ff26c 100644 --- a/sdk/storage/examples/container_01.rs +++ b/sdk/storage_blobs/examples/container_01.rs @@ -1,6 +1,6 @@ use azure_core::prelude::*; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use chrono::{FixedOffset, Utc}; use std::error::Error; use std::ops::Add; @@ -22,9 +22,10 @@ async fn main() -> Result<(), Box> { let storage_account = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); + let base_blob_service = storage_account.as_base_blob_service(); let container = storage_account.as_container_client(container_name); - let res = storage_account + let res = base_blob_service .list_containers() .client_request_id("ciccio") .include_metadata(true) diff --git a/sdk/storage/examples/container_and_blob.rs b/sdk/storage_blobs/examples/container_and_blob.rs similarity index 98% rename from sdk/storage/examples/container_and_blob.rs rename to sdk/storage_blobs/examples/container_and_blob.rs index 5600adeabd..3477696f58 100644 --- a/sdk/storage/examples/container_and_blob.rs +++ b/sdk/storage_blobs/examples/container_and_blob.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use bytes::Bytes; use std::error::Error; diff --git a/sdk/storage/examples/copy_blob.rs b/sdk/storage_blobs/examples/copy_blob.rs similarity index 98% rename from sdk/storage/examples/copy_blob.rs rename to sdk/storage_blobs/examples/copy_blob.rs index 563a30385f..5ed15bada6 100644 --- a/sdk/storage/examples/copy_blob.rs +++ b/sdk/storage_blobs/examples/copy_blob.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use chrono::{Duration, Utc}; use std::error::Error; diff --git a/sdk/storage/examples/copy_blob_from_url.rs b/sdk/storage_blobs/examples/copy_blob_from_url.rs similarity index 97% rename from sdk/storage/examples/copy_blob_from_url.rs rename to sdk/storage_blobs/examples/copy_blob_from_url.rs index b0fd97bf95..60effd1a09 100644 --- a/sdk/storage/examples/copy_blob_from_url.rs +++ b/sdk/storage_blobs/examples/copy_blob_from_url.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; #[tokio::main] diff --git a/sdk/storage/examples/count_blobs.rs b/sdk/storage_blobs/examples/count_blobs.rs similarity index 96% rename from sdk/storage/examples/count_blobs.rs rename to sdk/storage_blobs/examples/count_blobs.rs index 89a4de3fa3..97da3b695a 100644 --- a/sdk/storage/examples/count_blobs.rs +++ b/sdk/storage_blobs/examples/count_blobs.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::error::Error; diff --git a/sdk/storage/examples/emulator_00.rs b/sdk/storage_blobs/examples/emulator_00.rs similarity index 94% rename from sdk/storage/examples/emulator_00.rs rename to sdk/storage_blobs/examples/emulator_00.rs index 1d4875a8bb..d233f9e3a1 100644 --- a/sdk/storage/examples/emulator_00.rs +++ b/sdk/storage_blobs/examples/emulator_00.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; #[tokio::main] diff --git a/sdk/storage/examples/list_blobs_00.rs b/sdk/storage_blobs/examples/list_blobs_00.rs similarity index 86% rename from sdk/storage/examples/list_blobs_00.rs rename to sdk/storage_blobs/examples/list_blobs_00.rs index 9cc0613fbd..c0ba25b672 100644 --- a/sdk/storage/examples/list_blobs_00.rs +++ b/sdk/storage_blobs/examples/list_blobs_00.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::error::Error; use std::num::NonZeroU32; @@ -18,12 +18,12 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) - .as_storage_client(); - let container = storage_account.as_container_client(&container_name); + let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_storage_client(); + let base_blob_service = storage.as_base_blob_service(); + let container = storage.as_container_client(&container_name); - let iv = storage_account.list_containers().execute().await?; + let iv = base_blob_service.list_containers().execute().await?; if iv .incomplete_vector diff --git a/sdk/storage/examples/list_blobs_01.rs b/sdk/storage_blobs/examples/list_blobs_01.rs similarity index 96% rename from sdk/storage/examples/list_blobs_01.rs rename to sdk/storage_blobs/examples/list_blobs_01.rs index 5a4e38de7c..20e7665383 100644 --- a/sdk/storage/examples/list_blobs_01.rs +++ b/sdk/storage_blobs/examples/list_blobs_01.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::error::Error; use std::num::NonZeroU32; @@ -21,9 +21,10 @@ async fn main() -> Result<(), Box> { let storage_account = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); + let base_blob_service = storage_account.as_base_blob_service(); let container = storage_account.as_container_client(&container_name); - let iv = storage_account.list_containers().execute().await?; + let iv = base_blob_service.list_containers().execute().await?; if iv .incomplete_vector diff --git a/sdk/storage/examples/list_blobs_02.rs b/sdk/storage_blobs/examples/list_blobs_02.rs similarity index 92% rename from sdk/storage/examples/list_blobs_02.rs rename to sdk/storage_blobs/examples/list_blobs_02.rs index b5d2bdc40b..6f7604a171 100644 --- a/sdk/storage/examples/list_blobs_02.rs +++ b/sdk/storage_blobs/examples/list_blobs_02.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; #[tokio::main] @@ -28,10 +28,10 @@ async fn main() -> Result<(), Box> { } async fn create_container_and_list( - storage_account: std::sync::Arc, + storage: std::sync::Arc, container_name: &str, ) -> Result<(), Box> { - let container = storage_account.as_container_client(container_name); + let container = storage.as_container_client(container_name); container.create().execute().await?; diff --git a/sdk/storage/examples/list_containers2.rs b/sdk/storage_blobs/examples/list_containers2.rs similarity index 70% rename from sdk/storage/examples/list_containers2.rs rename to sdk/storage_blobs/examples/list_containers2.rs index c08304816a..eaf16c0720 100644 --- a/sdk/storage/examples/list_containers2.rs +++ b/sdk/storage_blobs/examples/list_containers2.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use serde::Serialize; use std::error::Error; @@ -19,31 +19,30 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); - let storage_account_client = + let storage_account = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage_client = storage_account_client.as_storage_client(); + let storage = storage_account.as_storage_client(); + let base_blob_service = storage.as_base_blob_service(); - let response = storage_client + let response = storage .as_container_client("azuresdkforrust") .list_blobs() .execute() .await?; println!("key response = {:#?}", response); - // we can still use the storage_client since it's not moved - // by as_container_client above - // (rather reference counted) - let response = storage_client.list_containers().execute().await?; + let response = base_blob_service.list_containers().execute().await?; println!("key response = {:#?}", response); // let's test a SAS token // the code is identical // once instantiated let sas_token = "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-12-05T20:20:58Z&st=2020-12-05T12:20:58Z&spr=https&sig=vxUuKjQW4%2FmB884f%2BdqCp4h3O%2BYuYgIJN8RVGHFVFpY%3D"; - let client = StorageAccountClient::new_sas_token(http_client.clone(), &account, sas_token)? + let storage = StorageAccountClient::new_sas_token(http_client.clone(), &account, sas_token)? .as_storage_client(); - let response = client.list_containers().execute().await?; + let base_blob_service = storage.as_base_blob_service(); + let response = base_blob_service.list_containers().execute().await?; println!("sas response = {:#?}", response); Ok(()) diff --git a/sdk/storage/examples/put_append_blob_00.rs b/sdk/storage_blobs/examples/put_append_blob_00.rs similarity index 98% rename from sdk/storage/examples/put_append_blob_00.rs rename to sdk/storage_blobs/examples/put_append_blob_00.rs index 1af98f2324..f97804c9dd 100644 --- a/sdk/storage/examples/put_append_blob_00.rs +++ b/sdk/storage_blobs/examples/put_append_blob_00.rs @@ -2,8 +2,8 @@ extern crate log; use azure_core::prelude::*; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::error::Error; #[tokio::main] diff --git a/sdk/storage/examples/put_block_blob_00.rs b/sdk/storage_blobs/examples/put_block_blob_00.rs similarity index 98% rename from sdk/storage/examples/put_block_blob_00.rs rename to sdk/storage_blobs/examples/put_block_blob_00.rs index 2a98d1bdb5..7b824f8bbc 100644 --- a/sdk/storage/examples/put_block_blob_00.rs +++ b/sdk/storage_blobs/examples/put_block_blob_00.rs @@ -1,8 +1,8 @@ #[macro_use] extern crate log; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use bytes::Bytes; use std::error::Error; use std::time::Duration; diff --git a/sdk/storage/examples/put_page_blob_00.rs b/sdk/storage_blobs/examples/put_page_blob_00.rs similarity index 98% rename from sdk/storage/examples/put_page_blob_00.rs rename to sdk/storage_blobs/examples/put_page_blob_00.rs index cb33f42fe3..9f9478cb7c 100644 --- a/sdk/storage/examples/put_page_blob_00.rs +++ b/sdk/storage_blobs/examples/put_page_blob_00.rs @@ -1,8 +1,8 @@ #[macro_use] extern crate log; use azure_core::prelude::*; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use bytes::Bytes; use std::error::Error; diff --git a/sdk/storage/examples/sas00.rs_toreenable b/sdk/storage_blobs/examples/sas00.rs_toreenable similarity index 100% rename from sdk/storage/examples/sas00.rs_toreenable rename to sdk/storage_blobs/examples/sas00.rs_toreenable diff --git a/sdk/storage/examples/shared_access_signature.rs b/sdk/storage_blobs/examples/shared_access_signature.rs similarity index 98% rename from sdk/storage/examples/shared_access_signature.rs rename to sdk/storage_blobs/examples/shared_access_signature.rs index c7f080f005..43c02def2a 100644 --- a/sdk/storage/examples/shared_access_signature.rs +++ b/sdk/storage_blobs/examples/shared_access_signature.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use chrono::{Duration, Utc}; use std::error::Error; diff --git a/sdk/storage/examples/stream_blob_00.rs b/sdk/storage_blobs/examples/stream_blob_00.rs similarity index 99% rename from sdk/storage/examples/stream_blob_00.rs rename to sdk/storage_blobs/examples/stream_blob_00.rs index 03b4cb0099..71d0596432 100644 --- a/sdk/storage/examples/stream_blob_00.rs +++ b/sdk/storage_blobs/examples/stream_blob_00.rs @@ -1,5 +1,5 @@ -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::cell::RefCell; use std::rc::Rc; diff --git a/sdk/storage/examples/stream_blob_01.rs b/sdk/storage_blobs/examples/stream_blob_01.rs similarity index 95% rename from sdk/storage/examples/stream_blob_01.rs rename to sdk/storage_blobs/examples/stream_blob_01.rs index 797e114cb6..64952ce3c0 100644 --- a/sdk/storage/examples/stream_blob_01.rs +++ b/sdk/storage_blobs/examples/stream_blob_01.rs @@ -1,6 +1,6 @@ -use azure_storage::blob::blob::responses::GetBlobResponse; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::blob::responses::GetBlobResponse; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; // This example shows how to stream data from a blob. We will create a simple blob first, the we diff --git a/sdk/storage/src/blob/access_tier.rs b/sdk/storage_blobs/src/access_tier.rs similarity index 100% rename from sdk/storage/src/blob/access_tier.rs rename to sdk/storage_blobs/src/access_tier.rs diff --git a/sdk/storage/src/blob/blob/blob_block_type.rs b/sdk/storage_blobs/src/blob/blob_block_type.rs similarity index 100% rename from sdk/storage/src/blob/blob/blob_block_type.rs rename to sdk/storage_blobs/src/blob/blob_block_type.rs diff --git a/sdk/storage/src/blob/blob/blob_block_with_size.rs b/sdk/storage_blobs/src/blob/blob_block_with_size.rs similarity index 78% rename from sdk/storage/src/blob/blob/blob_block_with_size.rs rename to sdk/storage_blobs/src/blob/blob_block_with_size.rs index d02d4e5b2c..48de7238b4 100644 --- a/sdk/storage/src/blob/blob/blob_block_with_size.rs +++ b/sdk/storage_blobs/src/blob/blob_block_with_size.rs @@ -1,4 +1,4 @@ -use crate::blob::blob::BlobBlockType; +use crate::blob::BlobBlockType; #[derive(Debug, Clone, PartialEq)] pub struct BlobBlockWithSize { diff --git a/sdk/storage/src/blob/blob/block_list.rs b/sdk/storage_blobs/src/blob/block_list.rs similarity index 97% rename from sdk/storage/src/blob/blob/block_list.rs rename to sdk/storage_blobs/src/blob/block_list.rs index 5166e54db1..20722ac75d 100644 --- a/sdk/storage/src/blob/blob/block_list.rs +++ b/sdk/storage_blobs/src/blob/block_list.rs @@ -1,4 +1,4 @@ -use crate::blob::blob::{BlobBlockType, BlockWithSizeList}; +use crate::blob::{BlobBlockType, BlockWithSizeList}; #[derive(Default, Debug, Clone, PartialEq)] pub struct BlockList { diff --git a/sdk/storage/src/blob/blob/block_list_type.rs b/sdk/storage_blobs/src/blob/block_list_type.rs similarity index 100% rename from sdk/storage/src/blob/blob/block_list_type.rs rename to sdk/storage_blobs/src/blob/block_list_type.rs diff --git a/sdk/storage/src/blob/blob/block_with_size_list.rs b/sdk/storage_blobs/src/blob/block_with_size_list.rs similarity index 97% rename from sdk/storage/src/blob/blob/block_with_size_list.rs rename to sdk/storage_blobs/src/blob/block_with_size_list.rs index 872f203ab6..e296380890 100644 --- a/sdk/storage/src/blob/blob/block_with_size_list.rs +++ b/sdk/storage_blobs/src/blob/block_with_size_list.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::BlobBlockType; -use crate::blob::blob::BlobBlockWithSize; +use crate::blob::BlobBlockType; +use crate::blob::BlobBlockWithSize; #[derive(Debug, Deserialize)] struct Name { #[serde(rename = "$value")] diff --git a/sdk/storage/src/blob/blob/lease_blob_options.rs b/sdk/storage_blobs/src/blob/lease_blob_options.rs similarity index 100% rename from sdk/storage/src/blob/blob/lease_blob_options.rs rename to sdk/storage_blobs/src/blob/lease_blob_options.rs diff --git a/sdk/storage/src/blob/blob/mod.rs b/sdk/storage_blobs/src/blob/mod.rs similarity index 96% rename from sdk/storage/src/blob/blob/mod.rs rename to sdk/storage_blobs/src/blob/mod.rs index 8c119d9360..d749c6b8d7 100644 --- a/sdk/storage/src/blob/blob/mod.rs +++ b/sdk/storage_blobs/src/blob/mod.rs @@ -12,13 +12,7 @@ mod block_list; pub use self::block_list::BlockList; pub mod requests; pub mod responses; -use crate::core::util::HeaderMapExt; -use crate::headers::CONTENT_CRC64; -use crate::{ - headers::{CONTENT_MD5, COPY_ID}, - ConsistencyCRC64, ConsistencyMD5, -}; -use crate::{AccessTier, CopyId, CopyProgress}; +use crate::AccessTier; use azure_core::headers::{ BLOB_SEQUENCE_NUMBER, BLOB_TYPE, COPY_COMPLETION_TIME, COPY_PROGRESS, COPY_SOURCE, COPY_STATUS, COPY_STATUS_DESCRIPTION, CREATION_TIME, LEASE_DURATION, LEASE_STATE, LEASE_STATUS, META_PREFIX, @@ -26,6 +20,13 @@ use azure_core::headers::{ }; use azure_core::parsing::from_azure_time; use azure_core::{Etag, LeaseDuration, LeaseState, LeaseStatus}; +use azure_storage::core::util::HeaderMapExt; +use azure_storage::core::{ + headers::{CONTENT_MD5, COPY_ID}, + ConsistencyCRC64, ConsistencyMD5, +}; +use azure_storage::headers::CONTENT_CRC64; +use azure_storage::{CopyId, CopyProgress}; use chrono::{DateTime, Utc}; use http::header; use std::{collections::HashMap, convert::TryInto, str::FromStr}; @@ -64,30 +65,26 @@ create_enum!(RehydratePriority, (High, "High"), (Standard, "Standard")); create_enum!(PageWriteType, (Update, "update"), (Clear, "clear")); use serde::{self, Deserialize, Deserializer}; -fn deserialize_crc64_optional<'de, D>( - deserializer: D, -) -> Result, D::Error> +fn deserialize_crc64_optional<'de, D>(deserializer: D) -> Result, D::Error> where D: Deserializer<'de>, { let s: Option = Option::deserialize(deserializer)?; s.filter(|s| !s.is_empty()) - .map(crate::ConsistencyCRC64::decode) + .map(ConsistencyCRC64::decode) .transpose() .map_err(serde::de::Error::custom) } -fn deserialize_md5_optional<'de, D>( - deserializer: D, -) -> Result, D::Error> +fn deserialize_md5_optional<'de, D>(deserializer: D) -> Result, D::Error> where D: Deserializer<'de>, { let s: Option = Option::deserialize(deserializer)?; s.filter(|s| !s.is_empty()) - .map(crate::ConsistencyMD5::decode) + .map(ConsistencyMD5::decode) .transpose() .map_err(serde::de::Error::custom) } diff --git a/sdk/storage/src/blob/blob/requests/acquire_lease_builder.rs b/sdk/storage_blobs/src/blob/requests/acquire_lease_builder.rs similarity index 96% rename from sdk/storage/src/blob/blob/requests/acquire_lease_builder.rs rename to sdk/storage_blobs/src/blob/requests/acquire_lease_builder.rs index ef1a97d55b..6eb6a7076c 100644 --- a/sdk/storage/src/blob/blob/requests/acquire_lease_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/acquire_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::AcquireBlobLeaseResponse; -use crate::blob::prelude::*; +use crate::blob::responses::AcquireBlobLeaseResponse; +use crate::prelude::*; use azure_core::headers::LEASE_ACTION; use azure_core::headers::{add_mandatory_header, add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/append_block_builder.rs b/sdk/storage_blobs/src/blob/requests/append_block_builder.rs similarity index 96% rename from sdk/storage/src/blob/blob/requests/append_block_builder.rs rename to sdk/storage_blobs/src/blob/requests/append_block_builder.rs index f75274bceb..c347546bb7 100644 --- a/sdk/storage/src/blob/blob/requests/append_block_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/append_block_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::PutBlockResponse; -use crate::blob::prelude::*; +use crate::blob::responses::PutBlockResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use bytes::Bytes; diff --git a/sdk/storage/src/blob/blob/requests/break_lease_builder.rs b/sdk/storage_blobs/src/blob/requests/break_lease_builder.rs similarity index 95% rename from sdk/storage/src/blob/blob/requests/break_lease_builder.rs rename to sdk/storage_blobs/src/blob/requests/break_lease_builder.rs index 824b60d774..59d0bda4d2 100644 --- a/sdk/storage/src/blob/blob/requests/break_lease_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/break_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::BreakBlobLeaseResponse; -use crate::blob::prelude::*; +use crate::blob::responses::BreakBlobLeaseResponse; +use crate::prelude::*; use azure_core::headers::LEASE_ACTION; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/change_lease_builder.rs b/sdk/storage_blobs/src/blob/requests/change_lease_builder.rs similarity index 95% rename from sdk/storage/src/blob/blob/requests/change_lease_builder.rs rename to sdk/storage_blobs/src/blob/requests/change_lease_builder.rs index 689aa9de95..ac1f5e42c9 100644 --- a/sdk/storage/src/blob/blob/requests/change_lease_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/change_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::ChangeBlobLeaseResponse; -use crate::blob::prelude::*; +use crate::blob::responses::ChangeBlobLeaseResponse; +use crate::prelude::*; use azure_core::headers::LEASE_ACTION; use azure_core::headers::{add_mandatory_header, add_optional_header}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/clear_page_builder.rs b/sdk/storage_blobs/src/blob/requests/clear_page_builder.rs similarity index 97% rename from sdk/storage/src/blob/blob/requests/clear_page_builder.rs rename to sdk/storage_blobs/src/blob/requests/clear_page_builder.rs index f37cebf266..fabf8f984b 100644 --- a/sdk/storage/src/blob/blob/requests/clear_page_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/clear_page_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::ClearPageResponse; -use crate::blob::prelude::*; +use crate::blob::responses::ClearPageResponse; +use crate::prelude::*; use azure_core::headers::{ add_mandatory_header, add_optional_header, add_optional_header_ref, BLOB_TYPE, PAGE_WRITE, }; diff --git a/sdk/storage/src/blob/blob/requests/copy_blob_builder.rs b/sdk/storage_blobs/src/blob/requests/copy_blob_builder.rs similarity index 98% rename from sdk/storage/src/blob/blob/requests/copy_blob_builder.rs rename to sdk/storage_blobs/src/blob/requests/copy_blob_builder.rs index f76c3863ed..4221010fa7 100644 --- a/sdk/storage/src/blob/blob/requests/copy_blob_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/copy_blob_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::CopyBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::CopyBlobResponse; +use crate::prelude::*; use crate::RehydratePriority; use azure_core::headers::COPY_SOURCE; use azure_core::headers::{add_mandatory_header, add_optional_header, add_optional_header_ref}; diff --git a/sdk/storage/src/blob/blob/requests/copy_blob_from_url_builder.rs b/sdk/storage_blobs/src/blob/requests/copy_blob_from_url_builder.rs similarity index 97% rename from sdk/storage/src/blob/blob/requests/copy_blob_from_url_builder.rs rename to sdk/storage_blobs/src/blob/requests/copy_blob_from_url_builder.rs index 3b1732194e..5cbe312eb1 100644 --- a/sdk/storage/src/blob/blob/requests/copy_blob_from_url_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/copy_blob_from_url_builder.rs @@ -1,6 +1,6 @@ use super::SourceContentMD5; -use crate::blob::blob::responses::CopyBlobFromUrlResponse; -use crate::blob::prelude::*; +use crate::blob::responses::CopyBlobFromUrlResponse; +use crate::prelude::*; use azure_core::headers::{ add_optional_header, add_optional_header_ref, COPY_SOURCE, REQUIRES_SYNC, }; diff --git a/sdk/storage/src/blob/blob/requests/delete_blob_builder.rs b/sdk/storage_blobs/src/blob/requests/delete_blob_builder.rs similarity index 96% rename from sdk/storage/src/blob/blob/requests/delete_blob_builder.rs rename to sdk/storage_blobs/src/blob/requests/delete_blob_builder.rs index ec00e03188..3151e938c9 100644 --- a/sdk/storage/src/blob/blob/requests/delete_blob_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/delete_blob_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::DeleteBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::DeleteBlobResponse; +use crate::prelude::*; use azure_core::headers::{add_mandatory_header, add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/delete_blob_snapshot_builder.rs b/sdk/storage_blobs/src/blob/requests/delete_blob_snapshot_builder.rs similarity index 96% rename from sdk/storage/src/blob/blob/requests/delete_blob_snapshot_builder.rs rename to sdk/storage_blobs/src/blob/requests/delete_blob_snapshot_builder.rs index 245597693a..e418c9e950 100644 --- a/sdk/storage/src/blob/blob/requests/delete_blob_snapshot_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/delete_blob_snapshot_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::DeleteBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::DeleteBlobResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/delete_blob_version_builder.rs b/sdk/storage_blobs/src/blob/requests/delete_blob_version_builder.rs similarity index 96% rename from sdk/storage/src/blob/blob/requests/delete_blob_version_builder.rs rename to sdk/storage_blobs/src/blob/requests/delete_blob_version_builder.rs index 33b935350b..c4fb3d93ac 100644 --- a/sdk/storage/src/blob/blob/requests/delete_blob_version_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/delete_blob_version_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::DeleteBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::DeleteBlobResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/get_blob_builder.rs b/sdk/storage_blobs/src/blob/requests/get_blob_builder.rs similarity index 98% rename from sdk/storage/src/blob/blob/requests/get_blob_builder.rs rename to sdk/storage_blobs/src/blob/requests/get_blob_builder.rs index fc437764d1..c0f1ffe0ec 100644 --- a/sdk/storage/src/blob/blob/requests/get_blob_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/get_blob_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::GetBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::GetBlobResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use futures::stream::Stream; diff --git a/sdk/storage/src/blob/blob/requests/get_blob_metadata_builder.rs b/sdk/storage_blobs/src/blob/requests/get_blob_metadata_builder.rs similarity index 95% rename from sdk/storage/src/blob/blob/requests/get_blob_metadata_builder.rs rename to sdk/storage_blobs/src/blob/requests/get_blob_metadata_builder.rs index a755416096..244d874f00 100644 --- a/sdk/storage/src/blob/blob/requests/get_blob_metadata_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/get_blob_metadata_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::GetBlobMetadataResponse; -use crate::blob::prelude::*; +use crate::blob::responses::GetBlobMetadataResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use std::convert::TryInto; diff --git a/sdk/storage/src/blob/blob/requests/get_blob_properties_builder.rs b/sdk/storage_blobs/src/blob/requests/get_blob_properties_builder.rs similarity index 96% rename from sdk/storage/src/blob/blob/requests/get_blob_properties_builder.rs rename to sdk/storage_blobs/src/blob/requests/get_blob_properties_builder.rs index 25d1c3da23..79a2094c5f 100644 --- a/sdk/storage/src/blob/blob/requests/get_blob_properties_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/get_blob_properties_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::GetBlobPropertiesResponse; -use crate::blob::prelude::*; +use crate::blob::responses::GetBlobPropertiesResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/get_block_list_builder.rs b/sdk/storage_blobs/src/blob/requests/get_block_list_builder.rs similarity index 94% rename from sdk/storage/src/blob/blob/requests/get_block_list_builder.rs rename to sdk/storage_blobs/src/blob/requests/get_block_list_builder.rs index aa6b55a8fb..6b0aa29ee4 100644 --- a/sdk/storage/src/blob/blob/requests/get_block_list_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/get_block_list_builder.rs @@ -1,6 +1,6 @@ -use crate::blob::blob::responses::GetBlockListResponse; -use crate::blob::blob::BlockListType; -use crate::blob::prelude::*; +use crate::blob::responses::GetBlockListResponse; +use crate::blob::BlockListType; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/mod.rs b/sdk/storage_blobs/src/blob/requests/mod.rs similarity index 100% rename from sdk/storage/src/blob/blob/requests/mod.rs rename to sdk/storage_blobs/src/blob/requests/mod.rs diff --git a/sdk/storage/src/blob/blob/requests/put_append_blob_builder.rs b/sdk/storage_blobs/src/blob/requests/put_append_blob_builder.rs similarity index 97% rename from sdk/storage/src/blob/blob/requests/put_append_blob_builder.rs rename to sdk/storage_blobs/src/blob/requests/put_append_blob_builder.rs index 3d55ab82ef..f83f46a247 100644 --- a/sdk/storage/src/blob/blob/requests/put_append_blob_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/put_append_blob_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::PutBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::PutBlobResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref, BLOB_TYPE}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/put_block_blob_builder.rs b/sdk/storage_blobs/src/blob/requests/put_block_blob_builder.rs similarity index 97% rename from sdk/storage/src/blob/blob/requests/put_block_blob_builder.rs rename to sdk/storage_blobs/src/blob/requests/put_block_blob_builder.rs index 3eb74e1e53..c792e4c341 100644 --- a/sdk/storage/src/blob/blob/requests/put_block_blob_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/put_block_blob_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::PutBlockBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::PutBlockBlobResponse; +use crate::prelude::*; use azure_core::headers::BLOB_TYPE; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/put_block_builder.rs b/sdk/storage_blobs/src/blob/requests/put_block_builder.rs similarity index 96% rename from sdk/storage/src/blob/blob/requests/put_block_builder.rs rename to sdk/storage_blobs/src/blob/requests/put_block_builder.rs index 1cf904d692..1853f7d012 100644 --- a/sdk/storage/src/blob/blob/requests/put_block_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/put_block_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::PutBlockResponse; -use crate::blob::prelude::*; +use crate::blob::responses::PutBlockResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use bytes::Bytes; diff --git a/sdk/storage/src/blob/blob/requests/put_block_list_builder.rs b/sdk/storage_blobs/src/blob/requests/put_block_list_builder.rs similarity index 97% rename from sdk/storage/src/blob/blob/requests/put_block_list_builder.rs rename to sdk/storage_blobs/src/blob/requests/put_block_list_builder.rs index 872afbcb79..2a8aa50984 100644 --- a/sdk/storage/src/blob/blob/requests/put_block_list_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/put_block_list_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::PutBlockListResponse; -use crate::blob::prelude::*; +use crate::blob::responses::PutBlockListResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use bytes::Bytes; diff --git a/sdk/storage/src/blob/blob/requests/put_page_blob_builder.rs b/sdk/storage_blobs/src/blob/requests/put_page_blob_builder.rs similarity index 97% rename from sdk/storage/src/blob/blob/requests/put_page_blob_builder.rs rename to sdk/storage_blobs/src/blob/requests/put_page_blob_builder.rs index b946ed03fd..a80d1092c0 100644 --- a/sdk/storage/src/blob/blob/requests/put_page_blob_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/put_page_blob_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::PutBlobResponse; -use crate::blob::prelude::*; +use crate::blob::responses::PutBlobResponse; +use crate::prelude::*; use azure_core::headers::{ add_optional_header, add_optional_header_ref, BLOB_CONTENT_LENGTH, BLOB_TYPE, }; diff --git a/sdk/storage/src/blob/blob/requests/release_lease_builder.rs b/sdk/storage_blobs/src/blob/requests/release_lease_builder.rs similarity index 95% rename from sdk/storage/src/blob/blob/requests/release_lease_builder.rs rename to sdk/storage_blobs/src/blob/requests/release_lease_builder.rs index 4411cd9050..5f4224a271 100644 --- a/sdk/storage/src/blob/blob/requests/release_lease_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/release_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::ReleaseBlobLeaseResponse; -use crate::blob::prelude::*; +use crate::blob::responses::ReleaseBlobLeaseResponse; +use crate::prelude::*; use azure_core::headers::{add_mandatory_header, add_optional_header, LEASE_ACTION}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/renew_lease_builder.rs b/sdk/storage_blobs/src/blob/requests/renew_lease_builder.rs similarity index 95% rename from sdk/storage/src/blob/blob/requests/renew_lease_builder.rs rename to sdk/storage_blobs/src/blob/requests/renew_lease_builder.rs index 43f2c03345..edc917443e 100644 --- a/sdk/storage/src/blob/blob/requests/renew_lease_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/renew_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::RenewBlobLeaseResponse; -use crate::blob::prelude::*; +use crate::blob::responses::RenewBlobLeaseResponse; +use crate::prelude::*; use azure_core::headers::{add_mandatory_header, add_optional_header, LEASE_ACTION}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/requests/set_blob_metadata_builder.rs b/sdk/storage_blobs/src/blob/requests/set_blob_metadata_builder.rs similarity index 95% rename from sdk/storage/src/blob/blob/requests/set_blob_metadata_builder.rs rename to sdk/storage_blobs/src/blob/requests/set_blob_metadata_builder.rs index 18fe2c058e..5b32cc801a 100644 --- a/sdk/storage/src/blob/blob/requests/set_blob_metadata_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/set_blob_metadata_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::SetBlobMetadataResponse; -use crate::blob::prelude::*; +use crate::blob::responses::SetBlobMetadataResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use std::convert::TryInto; diff --git a/sdk/storage/src/blob/blob/requests/source_content_md5.rs b/sdk/storage_blobs/src/blob/requests/source_content_md5.rs similarity index 100% rename from sdk/storage/src/blob/blob/requests/source_content_md5.rs rename to sdk/storage_blobs/src/blob/requests/source_content_md5.rs diff --git a/sdk/storage/src/blob/blob/requests/update_page_builder.rs b/sdk/storage_blobs/src/blob/requests/update_page_builder.rs similarity index 97% rename from sdk/storage/src/blob/blob/requests/update_page_builder.rs rename to sdk/storage_blobs/src/blob/requests/update_page_builder.rs index 1cbdeb8b1c..3cd936e066 100644 --- a/sdk/storage/src/blob/blob/requests/update_page_builder.rs +++ b/sdk/storage_blobs/src/blob/requests/update_page_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::UpdatePageResponse; -use crate::blob::prelude::*; +use crate::blob::responses::UpdatePageResponse; +use crate::prelude::*; use azure_core::headers::{add_mandatory_header, add_optional_header, add_optional_header_ref}; use azure_core::headers::{BLOB_TYPE, PAGE_WRITE}; use azure_core::prelude::*; diff --git a/sdk/storage/src/blob/blob/responses/acquire_blob_lease_response.rs b/sdk/storage_blobs/src/blob/responses/acquire_blob_lease_response.rs similarity index 87% rename from sdk/storage/src/blob/blob/responses/acquire_blob_lease_response.rs rename to sdk/storage_blobs/src/blob/responses/acquire_blob_lease_response.rs index 3c86a82b2b..610164466a 100644 --- a/sdk/storage/src/blob/blob/responses/acquire_blob_lease_response.rs +++ b/sdk/storage_blobs/src/blob/responses/acquire_blob_lease_response.rs @@ -3,7 +3,7 @@ use azure_core::prelude::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(AcquireBlobLeaseResponse, +azure_storage::response_from_headers!(AcquireBlobLeaseResponse, etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, lease_id_from_headers => lease_id: LeaseId, diff --git a/sdk/storage/src/blob/blob/responses/break_blob_lease_response.rs b/sdk/storage_blobs/src/blob/responses/break_blob_lease_response.rs similarity index 86% rename from sdk/storage/src/blob/blob/responses/break_blob_lease_response.rs rename to sdk/storage_blobs/src/blob/responses/break_blob_lease_response.rs index cc8c79a2c9..38fa729b0b 100644 --- a/sdk/storage/src/blob/blob/responses/break_blob_lease_response.rs +++ b/sdk/storage_blobs/src/blob/responses/break_blob_lease_response.rs @@ -2,7 +2,7 @@ use azure_core::headers::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(BreakBlobLeaseResponse , +azure_storage::response_from_headers!(BreakBlobLeaseResponse , etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, lease_time_from_headers => lease_time: u8, diff --git a/sdk/storage/src/blob/blob/responses/change_blob_lease_response.rs b/sdk/storage_blobs/src/blob/responses/change_blob_lease_response.rs similarity index 87% rename from sdk/storage/src/blob/blob/responses/change_blob_lease_response.rs rename to sdk/storage_blobs/src/blob/responses/change_blob_lease_response.rs index 9bda7f01b1..f39413e88e 100644 --- a/sdk/storage/src/blob/blob/responses/change_blob_lease_response.rs +++ b/sdk/storage_blobs/src/blob/responses/change_blob_lease_response.rs @@ -3,7 +3,7 @@ use azure_core::prelude::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(ChangeBlobLeaseResponse , +azure_storage::response_from_headers!(ChangeBlobLeaseResponse , etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, lease_id_from_headers => lease_id: LeaseId, diff --git a/sdk/storage/src/blob/blob/responses/clear_page_response.rs b/sdk/storage_blobs/src/blob/responses/clear_page_response.rs similarity index 87% rename from sdk/storage/src/blob/blob/responses/clear_page_response.rs rename to sdk/storage_blobs/src/blob/responses/clear_page_response.rs index 2f9e3dd9e9..f05b058889 100644 --- a/sdk/storage/src/blob/blob/responses/clear_page_response.rs +++ b/sdk/storage_blobs/src/blob/responses/clear_page_response.rs @@ -2,7 +2,7 @@ use azure_core::headers::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(ClearPageResponse, +azure_storage::response_from_headers!(ClearPageResponse, etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, sequence_number_from_headers => sequence_number: u64, diff --git a/sdk/storage/src/blob/blob/responses/copy_blob_from_url_response.rs b/sdk/storage_blobs/src/blob/responses/copy_blob_from_url_response.rs similarity index 86% rename from sdk/storage/src/blob/blob/responses/copy_blob_from_url_response.rs rename to sdk/storage_blobs/src/blob/responses/copy_blob_from_url_response.rs index 76f4666e3a..7de14fa037 100644 --- a/sdk/storage/src/blob/blob/responses/copy_blob_from_url_response.rs +++ b/sdk/storage_blobs/src/blob/responses/copy_blob_from_url_response.rs @@ -1,12 +1,12 @@ -use crate::blob::blob::{copy_status_from_headers, CopyStatus}; -use crate::core::CopyId; -use crate::ConsistencyMD5; -use crate::{core::copy_id_from_headers, headers::content_md5_from_headers_optional}; +use crate::blob::{copy_status_from_headers, CopyStatus}; use azure_core::headers::{ date_from_headers, etag_from_headers, last_modified_from_headers, request_id_from_headers, server_from_headers, version_from_headers, }; use azure_core::RequestId; +use azure_storage::core::CopyId; +use azure_storage::ConsistencyMD5; +use azure_storage::{core::copy_id_from_headers, headers::content_md5_from_headers_optional}; use chrono::{DateTime, Utc}; use http::HeaderMap; use std::convert::TryFrom; diff --git a/sdk/storage/src/blob/blob/responses/copy_blob_response.rs b/sdk/storage_blobs/src/blob/responses/copy_blob_response.rs similarity index 92% rename from sdk/storage/src/blob/blob/responses/copy_blob_response.rs rename to sdk/storage_blobs/src/blob/responses/copy_blob_response.rs index a0c56fe69f..268c205581 100644 --- a/sdk/storage/src/blob/blob/responses/copy_blob_response.rs +++ b/sdk/storage_blobs/src/blob/responses/copy_blob_response.rs @@ -1,10 +1,10 @@ -use crate::blob::blob::{copy_status_from_headers, CopyStatus}; -use crate::core::{copy_id_from_headers, CopyId}; +use crate::blob::{copy_status_from_headers, CopyStatus}; use azure_core::headers::{ client_request_id_from_headers_optional, date_from_headers, etag_from_headers, last_modified_from_headers, request_id_from_headers, server_from_headers, version_from_headers, }; use azure_core::RequestId; +use azure_storage::core::{copy_id_from_headers, CopyId}; use chrono::{DateTime, Utc}; use http::HeaderMap; use std::convert::TryFrom; diff --git a/sdk/storage/src/blob/blob/responses/delete_blob_response.rs b/sdk/storage_blobs/src/blob/responses/delete_blob_response.rs similarity index 83% rename from sdk/storage/src/blob/blob/responses/delete_blob_response.rs rename to sdk/storage_blobs/src/blob/responses/delete_blob_response.rs index df8e350bd6..eb8571d665 100644 --- a/sdk/storage/src/blob/blob/responses/delete_blob_response.rs +++ b/sdk/storage_blobs/src/blob/responses/delete_blob_response.rs @@ -3,14 +3,14 @@ use azure_core::RequestId; use chrono::{DateTime, Utc}; #[cfg(not(feature = "azurite_workaround"))] -crate::response_from_headers!(DeleteBlobResponse , +azure_storage::response_from_headers!(DeleteBlobResponse , delete_type_permanent_from_headers => delete_type_permanent: bool, request_id_from_headers => request_id: RequestId, date_from_headers => date: DateTime ); #[cfg(feature = "azurite_workaround")] -crate::response_from_headers!(DeleteBlobResponse , +azure_storage::response_from_headers!(DeleteBlobResponse , delete_type_permanent_from_headers => delete_type_permanent: Option, request_id_from_headers => request_id: RequestId, date_from_headers => date: DateTime diff --git a/sdk/storage/src/blob/blob/responses/get_blob_metadata_response.rs b/sdk/storage_blobs/src/blob/responses/get_blob_metadata_response.rs similarity index 100% rename from sdk/storage/src/blob/blob/responses/get_blob_metadata_response.rs rename to sdk/storage_blobs/src/blob/responses/get_blob_metadata_response.rs diff --git a/sdk/storage/src/blob/blob/responses/get_blob_properties_response.rs b/sdk/storage_blobs/src/blob/responses/get_blob_properties_response.rs similarity index 96% rename from sdk/storage/src/blob/blob/responses/get_blob_properties_response.rs rename to sdk/storage_blobs/src/blob/responses/get_blob_properties_response.rs index 27846b735a..3fcda1bb39 100644 --- a/sdk/storage/src/blob/blob/responses/get_blob_properties_response.rs +++ b/sdk/storage_blobs/src/blob/responses/get_blob_properties_response.rs @@ -1,4 +1,4 @@ -use crate::blob::blob::Blob; +use crate::blob::Blob; use azure_core::headers::{date_from_headers, request_id_from_headers}; use azure_core::RequestId; use chrono::{DateTime, Utc}; diff --git a/sdk/storage/src/blob/blob/responses/get_blob_response.rs b/sdk/storage_blobs/src/blob/responses/get_blob_response.rs similarity index 97% rename from sdk/storage/src/blob/blob/responses/get_blob_response.rs rename to sdk/storage_blobs/src/blob/responses/get_blob_response.rs index 3fe7f4470c..d1e74a5e70 100644 --- a/sdk/storage/src/blob/blob/responses/get_blob_response.rs +++ b/sdk/storage_blobs/src/blob/responses/get_blob_response.rs @@ -1,4 +1,4 @@ -use crate::blob::blob::Blob; +use crate::blob::Blob; use azure_core::headers::{date_from_headers, request_id_from_headers}; use azure_core::prelude::ContentRange; use azure_core::RequestId; diff --git a/sdk/storage/src/blob/blob/responses/get_block_list_response.rs b/sdk/storage_blobs/src/blob/responses/get_block_list_response.rs similarity index 96% rename from sdk/storage/src/blob/blob/responses/get_block_list_response.rs rename to sdk/storage_blobs/src/blob/responses/get_block_list_response.rs index 2c6e8ce30f..d5da8161a0 100644 --- a/sdk/storage/src/blob/blob/responses/get_block_list_response.rs +++ b/sdk/storage_blobs/src/blob/responses/get_block_list_response.rs @@ -1,4 +1,4 @@ -use crate::blob::blob::BlockWithSizeList; +use crate::blob::BlockWithSizeList; use azure_core::headers::{ date_from_headers, etag_from_headers_optional, last_modified_from_headers_optional, request_id_from_headers, diff --git a/sdk/storage/src/blob/blob/responses/list_blobs_response.rs b/sdk/storage_blobs/src/blob/responses/list_blobs_response.rs similarity index 99% rename from sdk/storage/src/blob/blob/responses/list_blobs_response.rs rename to sdk/storage_blobs/src/blob/responses/list_blobs_response.rs index e53f14c7ba..541e359c9e 100644 --- a/sdk/storage/src/blob/blob/responses/list_blobs_response.rs +++ b/sdk/storage_blobs/src/blob/responses/list_blobs_response.rs @@ -1,8 +1,8 @@ -use crate::blob::blob::Blob; -use crate::xml::read_xml; +use crate::blob::Blob; use azure_core::headers::{date_from_headers, request_id_from_headers}; use azure_core::prelude::NextMarker; use azure_core::RequestId; +use azure_storage::xml::read_xml; use bytes::Bytes; use chrono::{DateTime, Utc}; use std::convert::TryFrom; diff --git a/sdk/storage/src/blob/blob/responses/mod.rs b/sdk/storage_blobs/src/blob/responses/mod.rs similarity index 100% rename from sdk/storage/src/blob/blob/responses/mod.rs rename to sdk/storage_blobs/src/blob/responses/mod.rs diff --git a/sdk/storage/src/blob/blob/responses/put_blob_response.rs b/sdk/storage_blobs/src/blob/responses/put_blob_response.rs similarity index 100% rename from sdk/storage/src/blob/blob/responses/put_blob_response.rs rename to sdk/storage_blobs/src/blob/responses/put_blob_response.rs diff --git a/sdk/storage/src/blob/blob/responses/put_block_blob_response.rs b/sdk/storage_blobs/src/blob/responses/put_block_blob_response.rs similarity index 93% rename from sdk/storage/src/blob/blob/responses/put_block_blob_response.rs rename to sdk/storage_blobs/src/blob/responses/put_block_blob_response.rs index 36032a2bb2..2bc4072091 100644 --- a/sdk/storage/src/blob/blob/responses/put_block_blob_response.rs +++ b/sdk/storage_blobs/src/blob/responses/put_block_blob_response.rs @@ -1,9 +1,9 @@ -use crate::{headers::consistency_from_headers, ConsistencyCRC64, ConsistencyMD5}; use azure_core::headers::{ date_from_headers, etag_from_headers, last_modified_from_headers, request_id_from_headers, request_server_encrypted_from_headers, }; use azure_core::RequestId; +use azure_storage::{headers::consistency_from_headers, ConsistencyCRC64, ConsistencyMD5}; use chrono::{DateTime, Utc}; use http::HeaderMap; diff --git a/sdk/storage/src/blob/blob/responses/put_block_list_response.rs b/sdk/storage_blobs/src/blob/responses/put_block_list_response.rs similarity index 93% rename from sdk/storage/src/blob/blob/responses/put_block_list_response.rs rename to sdk/storage_blobs/src/blob/responses/put_block_list_response.rs index dbbe92345d..25bac9369a 100644 --- a/sdk/storage/src/blob/blob/responses/put_block_list_response.rs +++ b/sdk/storage_blobs/src/blob/responses/put_block_list_response.rs @@ -1,10 +1,10 @@ -use crate::headers::content_md5_from_headers; -use crate::ConsistencyMD5; use azure_core::headers::{ date_from_headers, etag_from_headers, last_modified_from_headers, request_id_from_headers, request_server_encrypted_from_headers, }; use azure_core::RequestId; +use azure_storage::headers::content_md5_from_headers; +use azure_storage::ConsistencyMD5; use chrono::{DateTime, Utc}; use http::HeaderMap; diff --git a/sdk/storage/src/blob/blob/responses/put_block_response.rs b/sdk/storage_blobs/src/blob/responses/put_block_response.rs similarity index 92% rename from sdk/storage/src/blob/blob/responses/put_block_response.rs rename to sdk/storage_blobs/src/blob/responses/put_block_response.rs index bbd7d7502c..ba71376544 100644 --- a/sdk/storage/src/blob/blob/responses/put_block_response.rs +++ b/sdk/storage_blobs/src/blob/responses/put_block_response.rs @@ -1,8 +1,8 @@ -use crate::{headers::consistency_from_headers, ConsistencyCRC64, ConsistencyMD5}; use azure_core::headers::{ date_from_headers, request_id_from_headers, request_server_encrypted_from_headers, }; use azure_core::RequestId; +use azure_storage::{headers::consistency_from_headers, ConsistencyCRC64, ConsistencyMD5}; use chrono::{DateTime, Utc}; use http::HeaderMap; diff --git a/sdk/storage/src/blob/blob/responses/release_blob_lease_response.rs b/sdk/storage_blobs/src/blob/responses/release_blob_lease_response.rs similarity index 83% rename from sdk/storage/src/blob/blob/responses/release_blob_lease_response.rs rename to sdk/storage_blobs/src/blob/responses/release_blob_lease_response.rs index 4d79ce44aa..10c26df546 100644 --- a/sdk/storage/src/blob/blob/responses/release_blob_lease_response.rs +++ b/sdk/storage_blobs/src/blob/responses/release_blob_lease_response.rs @@ -2,7 +2,7 @@ use azure_core::headers::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(ReleaseBlobLeaseResponse , +azure_storage::response_from_headers!(ReleaseBlobLeaseResponse , etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, request_id_from_headers => request_id: RequestId, diff --git a/sdk/storage/src/blob/blob/responses/renew_blob_lease_response.rs b/sdk/storage_blobs/src/blob/responses/renew_blob_lease_response.rs similarity index 87% rename from sdk/storage/src/blob/blob/responses/renew_blob_lease_response.rs rename to sdk/storage_blobs/src/blob/responses/renew_blob_lease_response.rs index a4a836b87e..6da8464630 100644 --- a/sdk/storage/src/blob/blob/responses/renew_blob_lease_response.rs +++ b/sdk/storage_blobs/src/blob/responses/renew_blob_lease_response.rs @@ -3,7 +3,7 @@ use azure_core::prelude::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(RenewBlobLeaseResponse, +azure_storage::response_from_headers!(RenewBlobLeaseResponse, etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, lease_id_from_headers => lease_id: LeaseId, diff --git a/sdk/storage/src/blob/blob/responses/set_blob_metadata_response.rs b/sdk/storage_blobs/src/blob/responses/set_blob_metadata_response.rs similarity index 100% rename from sdk/storage/src/blob/blob/responses/set_blob_metadata_response.rs rename to sdk/storage_blobs/src/blob/responses/set_blob_metadata_response.rs diff --git a/sdk/storage/src/blob/blob/responses/update_page_response.rs b/sdk/storage_blobs/src/blob/responses/update_page_response.rs similarity index 93% rename from sdk/storage/src/blob/blob/responses/update_page_response.rs rename to sdk/storage_blobs/src/blob/responses/update_page_response.rs index 086445f345..c977377735 100644 --- a/sdk/storage/src/blob/blob/responses/update_page_response.rs +++ b/sdk/storage_blobs/src/blob/responses/update_page_response.rs @@ -1,10 +1,10 @@ -use crate::headers::content_md5_from_headers; -use crate::ConsistencyMD5; use azure_core::headers::{ date_from_headers, etag_from_headers, last_modified_from_headers, request_id_from_headers, request_server_encrypted_from_headers, sequence_number_from_headers, }; use azure_core::RequestId; +use azure_storage::headers::content_md5_from_headers; +use azure_storage::ConsistencyMD5; use chrono::{DateTime, Utc}; use http::HeaderMap; diff --git a/sdk/storage/src/blob/blob_content_md5.rs b/sdk/storage_blobs/src/blob_content_md5.rs similarity index 100% rename from sdk/storage/src/blob/blob_content_md5.rs rename to sdk/storage_blobs/src/blob_content_md5.rs diff --git a/sdk/storage/src/blob/block_id.rs b/sdk/storage_blobs/src/block_id.rs similarity index 100% rename from sdk/storage/src/blob/block_id.rs rename to sdk/storage_blobs/src/block_id.rs diff --git a/sdk/storage_blobs/src/clients/base_blob_service.rs b/sdk/storage_blobs/src/clients/base_blob_service.rs new file mode 100644 index 0000000000..001d496f49 --- /dev/null +++ b/sdk/storage_blobs/src/clients/base_blob_service.rs @@ -0,0 +1,33 @@ +use azure_storage::core::clients::{AsStorageClient, StorageAccountClient, StorageClient}; +use std::sync::Arc; + +pub trait AsBaseBlobService { + fn as_base_blob_service(&self) -> Arc; +} + +impl AsBaseBlobService for Arc { + fn as_base_blob_service(&self) -> Arc { + BaseBlobService::new(self.clone()) + } +} + +impl AsBaseBlobService for Arc { + fn as_base_blob_service(&self) -> Arc { + self.as_storage_client().as_base_blob_service() + } +} + +#[derive(Debug, Clone)] +pub struct BaseBlobService { + storage_client: Arc, +} + +impl BaseBlobService { + pub(crate) fn new(storage_client: Arc) -> Arc { + Arc::new(Self { storage_client }) + } + + pub fn list_containers(&self) -> crate::container::requests::ListContainersBuilder { + crate::container::requests::ListContainersBuilder::new(&self.storage_client) + } +} diff --git a/sdk/storage/src/blob/clients/blob_client.rs b/sdk/storage_blobs/src/clients/blob_client.rs similarity index 97% rename from sdk/storage/src/blob/clients/blob_client.rs rename to sdk/storage_blobs/src/clients/blob_client.rs index 4c30f94fcf..48477f4ca4 100644 --- a/sdk/storage/src/blob/clients/blob_client.rs +++ b/sdk/storage_blobs/src/clients/blob_client.rs @@ -1,13 +1,13 @@ -use crate::blob::blob::requests::*; -use crate::blob::prelude::*; -use crate::core::clients::StorageCredentials; -use crate::core::prelude::*; -use crate::shared_access_signature::{ +use crate::blob::requests::*; +use crate::prelude::*; +use azure_core::prelude::*; +use azure_core::HttpClient; +use azure_storage::core::clients::StorageCredentials; +use azure_storage::core::prelude::*; +use azure_storage::core::shared_access_signature::{ service_sas::{BlobSharedAccessSignatureBuilder, BlobSignedResource, SetResources}, SasToken, }; -use azure_core::prelude::*; -use azure_core::HttpClient; use bytes::Bytes; use http::method::Method; use http::request::{Builder, Request}; @@ -213,7 +213,7 @@ impl BlobClient { #[cfg(test)] mod tests { use super::*; - use crate::blob::clients::AsBlobClient; + use crate::clients::AsBlobClient; struct FakeSas { token: String, diff --git a/sdk/storage/src/blob/clients/blob_lease_client.rs b/sdk/storage_blobs/src/clients/blob_lease_client.rs similarity index 96% rename from sdk/storage/src/blob/clients/blob_lease_client.rs rename to sdk/storage_blobs/src/clients/blob_lease_client.rs index 5126ba9611..f3048c9a28 100644 --- a/sdk/storage/src/blob/clients/blob_lease_client.rs +++ b/sdk/storage_blobs/src/clients/blob_lease_client.rs @@ -1,8 +1,8 @@ -use crate::blob::blob::requests::*; -use crate::blob::prelude::*; -use crate::core::prelude::*; +use crate::blob::requests::*; +use crate::prelude::*; use azure_core::prelude::*; use azure_core::HttpClient; +use azure_storage::core::prelude::*; use bytes::Bytes; use http::method::Method; use http::request::{Builder, Request}; diff --git a/sdk/storage/src/blob/clients/container_client.rs b/sdk/storage_blobs/src/clients/container_client.rs similarity index 97% rename from sdk/storage/src/blob/clients/container_client.rs rename to sdk/storage_blobs/src/clients/container_client.rs index 38878bb9d0..d2a85191de 100644 --- a/sdk/storage/src/blob/clients/container_client.rs +++ b/sdk/storage_blobs/src/clients/container_client.rs @@ -1,12 +1,12 @@ -use crate::blob::prelude::PublicAccess; use crate::container::requests::*; -use crate::core::clients::{StorageAccountClient, StorageClient, StorageCredentials}; -use crate::shared_access_signature::{ +use crate::prelude::PublicAccess; +use azure_core::prelude::*; +use azure_core::HttpClient; +use azure_storage::core::clients::{StorageAccountClient, StorageClient, StorageCredentials}; +use azure_storage::shared_access_signature::{ service_sas::{BlobSharedAccessSignatureBuilder, BlobSignedResource, SetResources}, SasToken, }; -use azure_core::prelude::*; -use azure_core::HttpClient; use bytes::Bytes; use http::method::Method; use http::request::{Builder, Request}; diff --git a/sdk/storage/src/blob/clients/container_lease_client.rs b/sdk/storage_blobs/src/clients/container_lease_client.rs similarity index 95% rename from sdk/storage/src/blob/clients/container_lease_client.rs rename to sdk/storage_blobs/src/clients/container_lease_client.rs index 5e53ae1009..3d72a77cda 100644 --- a/sdk/storage/src/blob/clients/container_lease_client.rs +++ b/sdk/storage_blobs/src/clients/container_lease_client.rs @@ -1,8 +1,8 @@ -use crate::blob::container::requests::*; -use crate::blob::prelude::*; -use crate::core::prelude::*; +use crate::container::requests::*; +use crate::prelude::*; use azure_core::prelude::*; use azure_core::HttpClient; +use azure_storage::core::prelude::*; use bytes::Bytes; use http::method::Method; use http::request::{Builder, Request}; diff --git a/sdk/storage/src/blob/clients/mod.rs b/sdk/storage_blobs/src/clients/mod.rs similarity index 79% rename from sdk/storage/src/blob/clients/mod.rs rename to sdk/storage_blobs/src/clients/mod.rs index f65f84fc54..b13b6b51e8 100644 --- a/sdk/storage/src/blob/clients/mod.rs +++ b/sdk/storage_blobs/src/clients/mod.rs @@ -1,3 +1,5 @@ +mod base_blob_service; +pub use base_blob_service::{AsBaseBlobService, BaseBlobService}; mod container_client; pub use container_client::{AsContainerClient, ContainerClient}; mod container_lease_client; diff --git a/sdk/storage/src/blob/condition_append_position.rs b/sdk/storage_blobs/src/condition_append_position.rs similarity index 100% rename from sdk/storage/src/blob/condition_append_position.rs rename to sdk/storage_blobs/src/condition_append_position.rs diff --git a/sdk/storage/src/blob/condition_max_size.rs b/sdk/storage_blobs/src/condition_max_size.rs similarity index 100% rename from sdk/storage/src/blob/condition_max_size.rs rename to sdk/storage_blobs/src/condition_max_size.rs diff --git a/sdk/storage/src/blob/container/mod.rs b/sdk/storage_blobs/src/container/mod.rs similarity index 95% rename from sdk/storage/src/blob/container/mod.rs rename to sdk/storage_blobs/src/container/mod.rs index bac4722692..8b283b0d31 100644 --- a/sdk/storage/src/blob/container/mod.rs +++ b/sdk/storage_blobs/src/container/mod.rs @@ -3,12 +3,21 @@ pub mod requests; pub mod responses; use super::IncompleteVector; -use crate::parsing_xml::{cast_must, cast_optional, traverse}; use azure_core::headers::{ BLOB_PUBLIC_ACCESS, HAS_IMMUTABILITY_POLICY, HAS_LEGAL_HOLD, LEASE_DURATION, LEASE_STATE, LEASE_STATUS, META_PREFIX, }; use azure_core::{LeaseDuration, LeaseState, LeaseStatus}; +use azure_storage::parsing_xml::{cast_must, cast_optional, traverse}; +// use azure_core::incompletevector::IncompleteVector; +// use azure_core::{ +// headers::{ +// BLOB_PUBLIC_ACCESS, HAS_IMMUTABILITY_POLICY, HAS_LEGAL_HOLD, LEASE_DURATION, LEASE_STATE, +// LEASE_STATUS, META_PREFIX, +// }, +// lease::{LeaseDuration, LeaseState, LeaseStatus}, +// }; +// use azure_storage::core::parsing_xml::{cast_must, cast_optional, traverse}; use chrono::{DateTime, Utc}; use http::request::Builder; use http::{header, HeaderMap}; diff --git a/sdk/storage/src/blob/container/requests/acquire_lease_builder.rs b/sdk/storage_blobs/src/container/requests/acquire_lease_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/acquire_lease_builder.rs rename to sdk/storage_blobs/src/container/requests/acquire_lease_builder.rs index 0247392f07..02d7b5d449 100644 --- a/sdk/storage/src/blob/container/requests/acquire_lease_builder.rs +++ b/sdk/storage_blobs/src/container/requests/acquire_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::prelude::*; use crate::container::responses::AcquireLeaseResponse; +use crate::prelude::*; use azure_core::headers::{ add_mandatory_header, add_optional_header, add_optional_header_ref, LEASE_ACTION, }; diff --git a/sdk/storage/src/blob/container/requests/break_lease_builder.rs b/sdk/storage_blobs/src/container/requests/break_lease_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/break_lease_builder.rs rename to sdk/storage_blobs/src/container/requests/break_lease_builder.rs index eb99c2b8b5..fcd4b1ac7c 100644 --- a/sdk/storage/src/blob/container/requests/break_lease_builder.rs +++ b/sdk/storage_blobs/src/container/requests/break_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::prelude::*; use crate::container::responses::BreakLeaseResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref, LEASE_ACTION}; use azure_core::prelude::*; use http::method::Method; diff --git a/sdk/storage/src/blob/container/requests/create_builder.rs b/sdk/storage_blobs/src/container/requests/create_builder.rs similarity index 97% rename from sdk/storage/src/blob/container/requests/create_builder.rs rename to sdk/storage_blobs/src/container/requests/create_builder.rs index 474617689d..e5d69033ea 100644 --- a/sdk/storage/src/blob/container/requests/create_builder.rs +++ b/sdk/storage_blobs/src/container/requests/create_builder.rs @@ -1,4 +1,4 @@ -use crate::{blob::prelude::*, container::PublicAccess}; +use crate::{container::PublicAccess, prelude::*}; use azure_core::{ headers::{add_mandatory_header, add_optional_header}, prelude::*, diff --git a/sdk/storage/src/blob/container/requests/delete_builder.rs b/sdk/storage_blobs/src/container/requests/delete_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/delete_builder.rs rename to sdk/storage_blobs/src/container/requests/delete_builder.rs index e52e947def..d849786517 100644 --- a/sdk/storage/src/blob/container/requests/delete_builder.rs +++ b/sdk/storage_blobs/src/container/requests/delete_builder.rs @@ -1,4 +1,4 @@ -use crate::blob::prelude::*; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use http::method::Method; diff --git a/sdk/storage/src/blob/container/requests/get_acl_builder.rs b/sdk/storage_blobs/src/container/requests/get_acl_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/get_acl_builder.rs rename to sdk/storage_blobs/src/container/requests/get_acl_builder.rs index 3317315de3..4dd172b2b9 100644 --- a/sdk/storage/src/blob/container/requests/get_acl_builder.rs +++ b/sdk/storage_blobs/src/container/requests/get_acl_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::prelude::*; use crate::container::responses::GetACLResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use http::method::Method; diff --git a/sdk/storage/src/blob/container/requests/get_properties_builder.rs b/sdk/storage_blobs/src/container/requests/get_properties_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/get_properties_builder.rs rename to sdk/storage_blobs/src/container/requests/get_properties_builder.rs index 53cfed4528..eec6c0bda3 100644 --- a/sdk/storage/src/blob/container/requests/get_properties_builder.rs +++ b/sdk/storage_blobs/src/container/requests/get_properties_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::prelude::*; use crate::container::responses::GetPropertiesResponse; +use crate::prelude::*; use azure_core::headers::{add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; use http::method::Method; diff --git a/sdk/storage/src/blob/container/requests/list_blobs_builder.rs b/sdk/storage_blobs/src/container/requests/list_blobs_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/list_blobs_builder.rs rename to sdk/storage_blobs/src/container/requests/list_blobs_builder.rs index 76adc33cc5..42cc49721a 100644 --- a/sdk/storage/src/blob/container/requests/list_blobs_builder.rs +++ b/sdk/storage_blobs/src/container/requests/list_blobs_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::blob::responses::ListBlobsResponse; -use crate::blob::prelude::*; +use crate::blob::responses::ListBlobsResponse; +use crate::prelude::*; use azure_core::headers::add_optional_header; use azure_core::prelude::*; use futures::stream::{unfold, Stream}; diff --git a/sdk/storage/src/blob/container/requests/list_containers_builder.rs b/sdk/storage_blobs/src/container/requests/list_containers_builder.rs similarity index 99% rename from sdk/storage/src/blob/container/requests/list_containers_builder.rs rename to sdk/storage_blobs/src/container/requests/list_containers_builder.rs index 1bd6c0330a..283f48fe13 100644 --- a/sdk/storage/src/blob/container/requests/list_containers_builder.rs +++ b/sdk/storage_blobs/src/container/requests/list_containers_builder.rs @@ -1,9 +1,9 @@ use crate::container::incomplete_vector_from_container_response; use crate::container::responses::ListContainersResponse; -use crate::core::prelude::*; use azure_core::headers::add_optional_header; use azure_core::headers::request_id_from_headers; use azure_core::prelude::*; +use azure_storage::core::prelude::*; use futures::stream::{unfold, Stream}; use http::method::Method; use http::status::StatusCode; diff --git a/sdk/storage/src/blob/container/requests/mod.rs b/sdk/storage_blobs/src/container/requests/mod.rs similarity index 100% rename from sdk/storage/src/blob/container/requests/mod.rs rename to sdk/storage_blobs/src/container/requests/mod.rs diff --git a/sdk/storage/src/blob/container/requests/release_lease_builder.rs b/sdk/storage_blobs/src/container/requests/release_lease_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/release_lease_builder.rs rename to sdk/storage_blobs/src/container/requests/release_lease_builder.rs index 81999b2ae5..8fe9fda709 100644 --- a/sdk/storage/src/blob/container/requests/release_lease_builder.rs +++ b/sdk/storage_blobs/src/container/requests/release_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::prelude::*; use crate::container::responses::ReleaseLeaseResponse; +use crate::prelude::*; use azure_core::headers::{add_mandatory_header, add_optional_header, LEASE_ACTION}; use azure_core::prelude::*; use http::method::Method; diff --git a/sdk/storage/src/blob/container/requests/renew_lease_builder.rs b/sdk/storage_blobs/src/container/requests/renew_lease_builder.rs similarity index 98% rename from sdk/storage/src/blob/container/requests/renew_lease_builder.rs rename to sdk/storage_blobs/src/container/requests/renew_lease_builder.rs index 88ef8e84d3..2fded94de5 100644 --- a/sdk/storage/src/blob/container/requests/renew_lease_builder.rs +++ b/sdk/storage_blobs/src/container/requests/renew_lease_builder.rs @@ -1,5 +1,5 @@ -use crate::blob::prelude::*; use crate::container::responses::RenewLeaseResponse; +use crate::prelude::*; use azure_core::headers::{add_mandatory_header, add_optional_header, LEASE_ACTION}; use azure_core::prelude::*; use http::method::Method; diff --git a/sdk/storage/src/blob/container/requests/set_acl_builder.rs b/sdk/storage_blobs/src/container/requests/set_acl_builder.rs similarity index 97% rename from sdk/storage/src/blob/container/requests/set_acl_builder.rs rename to sdk/storage_blobs/src/container/requests/set_acl_builder.rs index 761d47ff34..05a7d4e435 100644 --- a/sdk/storage/src/blob/container/requests/set_acl_builder.rs +++ b/sdk/storage_blobs/src/container/requests/set_acl_builder.rs @@ -1,7 +1,8 @@ use crate::container::public_access_from_header; -use crate::{blob::prelude::*, StoredAccessPolicyList}; +use crate::prelude::*; use azure_core::headers::{add_mandatory_header, add_optional_header, add_optional_header_ref}; use azure_core::prelude::*; +use azure_storage::core::StoredAccessPolicyList; use bytes::Bytes; use http::method::Method; use http::status::StatusCode; diff --git a/sdk/storage/src/blob/container/responses/acquire_lease_response.rs b/sdk/storage_blobs/src/container/responses/acquire_lease_response.rs similarity index 87% rename from sdk/storage/src/blob/container/responses/acquire_lease_response.rs rename to sdk/storage_blobs/src/container/responses/acquire_lease_response.rs index e4f6df2d3f..7e3446a9de 100644 --- a/sdk/storage/src/blob/container/responses/acquire_lease_response.rs +++ b/sdk/storage_blobs/src/container/responses/acquire_lease_response.rs @@ -3,7 +3,7 @@ use azure_core::prelude::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(AcquireLeaseResponse , +azure_storage::response_from_headers!(AcquireLeaseResponse , etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, lease_id_from_headers => lease_id: LeaseId, diff --git a/sdk/storage/src/blob/container/responses/break_lease_response.rs b/sdk/storage_blobs/src/container/responses/break_lease_response.rs similarity index 87% rename from sdk/storage/src/blob/container/responses/break_lease_response.rs rename to sdk/storage_blobs/src/container/responses/break_lease_response.rs index a22f09773e..0ae79438c4 100644 --- a/sdk/storage/src/blob/container/responses/break_lease_response.rs +++ b/sdk/storage_blobs/src/container/responses/break_lease_response.rs @@ -2,7 +2,7 @@ use azure_core::headers::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(BreakLeaseResponse, +azure_storage::response_from_headers!(BreakLeaseResponse, etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, lease_time_from_headers => lease_time: u8, diff --git a/sdk/storage/src/blob/container/responses/get_acl_response.rs b/sdk/storage_blobs/src/container/responses/get_acl_response.rs similarity index 95% rename from sdk/storage/src/blob/container/responses/get_acl_response.rs rename to sdk/storage_blobs/src/container/responses/get_acl_response.rs index b644fdd06d..8770ecd4bc 100644 --- a/sdk/storage/src/blob/container/responses/get_acl_response.rs +++ b/sdk/storage_blobs/src/container/responses/get_acl_response.rs @@ -1,9 +1,7 @@ -use crate::{ - container::{public_access_from_header, PublicAccess}, - StoredAccessPolicyList, -}; +use crate::container::{public_access_from_header, PublicAccess}; use azure_core::headers::REQUEST_ID; use azure_core::RequestId; +use azure_storage::core::StoredAccessPolicyList; use bytes::Bytes; use chrono::{DateTime, FixedOffset}; use http::header; diff --git a/sdk/storage/src/blob/container/responses/get_properties_response.rs b/sdk/storage_blobs/src/container/responses/get_properties_response.rs similarity index 100% rename from sdk/storage/src/blob/container/responses/get_properties_response.rs rename to sdk/storage_blobs/src/container/responses/get_properties_response.rs diff --git a/sdk/storage/src/blob/container/responses/list_containers_response.rs b/sdk/storage_blobs/src/container/responses/list_containers_response.rs similarity index 100% rename from sdk/storage/src/blob/container/responses/list_containers_response.rs rename to sdk/storage_blobs/src/container/responses/list_containers_response.rs diff --git a/sdk/storage/src/blob/container/responses/mod.rs b/sdk/storage_blobs/src/container/responses/mod.rs similarity index 100% rename from sdk/storage/src/blob/container/responses/mod.rs rename to sdk/storage_blobs/src/container/responses/mod.rs diff --git a/sdk/storage/src/blob/container/responses/release_lease_response.rs b/sdk/storage_blobs/src/container/responses/release_lease_response.rs similarity index 84% rename from sdk/storage/src/blob/container/responses/release_lease_response.rs rename to sdk/storage_blobs/src/container/responses/release_lease_response.rs index 16d5a9d46a..bb78b665cf 100644 --- a/sdk/storage/src/blob/container/responses/release_lease_response.rs +++ b/sdk/storage_blobs/src/container/responses/release_lease_response.rs @@ -2,7 +2,7 @@ use azure_core::headers::*; use azure_core::RequestId; use chrono::{DateTime, Utc}; -crate::response_from_headers!(ReleaseLeaseResponse , +azure_storage::response_from_headers!(ReleaseLeaseResponse , etag_from_headers => etag: String, last_modified_from_headers => last_modified: DateTime, request_id_from_headers => request_id: RequestId, diff --git a/sdk/storage/src/blob/container/responses/renew_lease_response.rs b/sdk/storage_blobs/src/container/responses/renew_lease_response.rs similarity index 100% rename from sdk/storage/src/blob/container/responses/renew_lease_response.rs rename to sdk/storage_blobs/src/container/responses/renew_lease_response.rs diff --git a/sdk/storage/src/blob/delete_snapshot_method.rs b/sdk/storage_blobs/src/delete_snapshot_method.rs similarity index 100% rename from sdk/storage/src/blob/delete_snapshot_method.rs rename to sdk/storage_blobs/src/delete_snapshot_method.rs diff --git a/sdk/storage/src/blob/hash.rs b/sdk/storage_blobs/src/hash.rs similarity index 94% rename from sdk/storage/src/blob/hash.rs rename to sdk/storage_blobs/src/hash.rs index 186b48b672..c2d95d63fe 100644 --- a/sdk/storage/src/blob/hash.rs +++ b/sdk/storage_blobs/src/hash.rs @@ -1,7 +1,7 @@ use azure_core::AddAsHeader; use http::request::Builder; -use crate::headers::{CONTENT_CRC64, CONTENT_MD5}; +use azure_storage::core::headers::{CONTENT_CRC64, CONTENT_MD5}; #[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord)] pub enum Hash { diff --git a/sdk/storage/src/blob/headers.rs b/sdk/storage_blobs/src/headers.rs similarity index 100% rename from sdk/storage/src/blob/headers.rs rename to sdk/storage_blobs/src/headers.rs diff --git a/sdk/storage/src/blob/incomplete_vector.rs b/sdk/storage_blobs/src/incomplete_vector.rs similarity index 100% rename from sdk/storage/src/blob/incomplete_vector.rs rename to sdk/storage_blobs/src/incomplete_vector.rs diff --git a/sdk/storage/src/blob/mod.rs b/sdk/storage_blobs/src/lib.rs similarity index 90% rename from sdk/storage/src/blob/mod.rs rename to sdk/storage_blobs/src/lib.rs index 3fd387431b..617848707c 100644 --- a/sdk/storage/src/blob/mod.rs +++ b/sdk/storage_blobs/src/lib.rs @@ -1,3 +1,12 @@ +#[macro_use] +extern crate log; +#[macro_use] +extern crate serde_derive; +#[macro_use] +extern crate azure_core; + +pub use azure_storage::{Error, Result}; + mod access_tier; #[allow(clippy::module_inception)] pub mod blob; @@ -66,7 +75,7 @@ impl AddAsHeader for RehydratePriority { fn add_as_header2( &self, request: &mut azure_core::Request, - ) -> Result<(), azure_core::HTTPHeaderError> { + ) -> std::result::Result<(), azure_core::HTTPHeaderError> { request.headers_mut().append( headers::REHYDRATE_PRIORITY, http::header::HeaderValue::from_str(&self.to_string())?, diff --git a/sdk/storage_blobs/src/prelude.rs b/sdk/storage_blobs/src/prelude.rs new file mode 100644 index 0000000000..f8a5a549a3 --- /dev/null +++ b/sdk/storage_blobs/src/prelude.rs @@ -0,0 +1,11 @@ +pub use super::container::PublicAccess; +pub use crate::blob::{Blob, BlobBlockType, BlockList, BlockListType}; +pub use crate::clients::{ + AsBaseBlobService, AsBlobClient, AsBlobLeaseClient, AsContainerClient, AsContainerLeaseClient, + BaseBlobService, BlobClient, BlobLeaseClient, ContainerClient, ContainerLeaseClient, +}; +pub use crate::{ + AccessTier, BlobContentMD5, BlobVersioning, BlockId, ConditionAppendPosition, ConditionMaxSize, + DeleteSnapshotsMethod, Hash, RehydratePriority, Snapshot, VersionId, +}; +pub use azure_storage::core::{StoredAccessPolicy, StoredAccessPolicyList}; diff --git a/sdk/storage/src/blob/snapshot.rs b/sdk/storage_blobs/src/snapshot.rs similarity index 100% rename from sdk/storage/src/blob/snapshot.rs rename to sdk/storage_blobs/src/snapshot.rs diff --git a/sdk/storage/src/blob/version_id.rs b/sdk/storage_blobs/src/version_id.rs similarity index 100% rename from sdk/storage/src/blob/version_id.rs rename to sdk/storage_blobs/src/version_id.rs From 8a3464a546c603077f205344943d21a47cf161b0 Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 7 Nov 2021 22:15:23 +0000 Subject: [PATCH 02/13] Updated README. General cleanup. --- sdk/storage/Cargo.toml | 72 ------------------- .../src/core/clients/storage_client.rs | 23 ++++++ sdk/storage/src/lib.rs | 2 - sdk/storage_blobs/README.md | 6 +- 4 files changed, 26 insertions(+), 77 deletions(-) diff --git a/sdk/storage/Cargo.toml b/sdk/storage/Cargo.toml index 92fb337bf5..fc65b0e9bd 100644 --- a/sdk/storage/Cargo.toml +++ b/sdk/storage/Cargo.toml @@ -60,78 +60,6 @@ required-features = ["table"] [[example]] name="account00" required-features = ["account"] -# [[example]] -# name="blob_00" -# required-features=["blob"] -# [[example]] -# name="blob_01" -# required-features=["blob"] -# [[example]] -# name="blob_02_bearer_token" -# required-features=["blob"] -# [[example]] -# name="blob_04" -# required-features=["blob"] -# [[example]] -# name="blob_05_default_credential" -# required-features=["blob"] -# [[example]] -# name="blob_range" -# required-features=["blob"] -# [[example]] -# name="connection_string_builder" -# required-features=["blob"] -# [[example]] -# name="connection_string" -# required-features=["blob"] -# [[example]] -# name="container_00" -# required-features=["blob"] -# [[example]] -# name="container_01" -# required-features=["blob"] -# [[example]] -# name="container_and_blob" -# required-features=["blob"] -# [[example]] -# name="copy_blob_from_url" -# required-features=["blob"] -# [[example]] -# name="copy_blob" -# required-features=["blob"] -# [[example]] -# name="count_blobs" -# required-features=["blob"] -# [[example]] -# name="emulator_00" -# required-features=["blob"] -# [[example]] -# name="list_blobs_00" -# required-features=["blob"] -# [[example]] -# name="list_blobs_01" -# required-features=["blob"] -# [[example]] -# name="list_containers2" -# required-features=["blob"] -# [[example]] -# name="put_append_blob_00" -# required-features=["blob"] -# [[example]] -# name="put_block_blob_00" -# required-features=["blob"] -# [[example]] -# name="put_page_blob_00" -# required-features=["blob"] -# [[example]] -# name="shared_access_signature" -# required-features=["blob"] -# [[example]] -# name="stream_blob_00" -# required-features=["blob"] -# [[example]] -# name="stream_blob_01" -# required-features=["blob"] [[example]] name="data_lake_00_file_system" required-features=["data_lake"] diff --git a/sdk/storage/src/core/clients/storage_client.rs b/sdk/storage/src/core/clients/storage_client.rs index b51b7f8da7..368fda2ad5 100644 --- a/sdk/storage/src/core/clients/storage_client.rs +++ b/sdk/storage/src/core/clients/storage_client.rs @@ -89,6 +89,29 @@ impl StorageClient { // pub fn list_containers(&self) -> crate::container::requests::ListContainersBuilder { // crate::container::requests::ListContainersBuilder::new(self) // } + #[cfg(feature = "queue")] + pub fn list_queues(&self) -> crate::queue::requests::ListQueuesBuilder { + crate::queue::requests::ListQueuesBuilder::new(self) + } + + #[cfg(feature = "queue")] + pub fn get_queue_service_properties( + &self, + ) -> crate::queue::requests::GetQueueServicePropertiesBuilder { + crate::queue::requests::GetQueueServicePropertiesBuilder::new(self) + } + + #[cfg(feature = "queue")] + pub fn set_queue_service_properties( + &self, + ) -> crate::queue::requests::SetQueueServicePropertiesBuilder { + crate::queue::requests::SetQueueServicePropertiesBuilder::new(self) + } + + #[cfg(feature = "queue")] + pub fn get_queue_service_stats(&self) -> crate::queue::requests::GetQueueServiceStatsBuilder { + crate::queue::requests::GetQueueServiceStatsBuilder::new(self) + } #[allow(dead_code)] pub fn prepare_request( diff --git a/sdk/storage/src/lib.rs b/sdk/storage/src/lib.rs index 84806b3cdf..ae56b0b9a6 100644 --- a/sdk/storage/src/lib.rs +++ b/sdk/storage/src/lib.rs @@ -15,8 +15,6 @@ pub use self::core::{Error, Result}; #[cfg(feature = "account")] pub mod account; -// #[cfg(feature = "blob")] -// pub mod blob; pub mod core; #[cfg(feature = "data_lake")] pub mod data_lake; diff --git a/sdk/storage_blobs/README.md b/sdk/storage_blobs/README.md index 217dbb875b..9c691c2173 100644 --- a/sdk/storage_blobs/README.md +++ b/sdk/storage_blobs/README.md @@ -1,6 +1,6 @@ -# Azure SDK for Rust - Azure Messaging Queues +# Azure SDK for Rust - Azure Storage Blobs -Azure Messaging Queues crate for the unofficial Microsoft Azure SDK for Rust. This crate is part of a collection of crates: for more information please refer to [https://github.com/azure/azure-sdk-for-rust](https://github.com/azure/azure-sdk-for-rust). +Azure Storage Blobs crate for the unofficial Microsoft Azure SDK for Rust. This crate is part of a collection of crates: for more information please refer to [https://github.com/azure/azure-sdk-for-rust](https://github.com/azure/azure-sdk-for-rust). ## Usage @@ -8,5 +8,5 @@ To set this crate as a dependency, add this to your Cargo.toml ```toml [dependencies] -azure_messaging_queues = { version = "0.1.0", git = "https://github.com/Azure/azure-sdk-for-rust" } +azure_storage_blobs = { version = "0.1.0", git = "https://github.com/Azure/azure-sdk-for-rust" } ``` From aeba540289f7268e823755a05f7ca52a1f8d5bdb Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 7 Nov 2021 22:22:51 +0000 Subject: [PATCH 03/13] Minor cleanup. --- sdk/storage/src/lib.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/sdk/storage/src/lib.rs b/sdk/storage/src/lib.rs index ae56b0b9a6..e02eac9610 100644 --- a/sdk/storage/src/lib.rs +++ b/sdk/storage/src/lib.rs @@ -24,8 +24,6 @@ pub mod table; pub use crate::core::*; #[cfg(feature = "account")] pub use account::*; -// #[cfg(feature = "blob")] -// pub use blob::*; #[cfg(feature = "data_lake")] pub use data_lake::*; #[cfg(feature = "table")] From f14c8684fadf43689d3c73b70266c80464fd0e13 Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 7 Nov 2021 22:39:35 +0000 Subject: [PATCH 04/13] Tweak include of storage headers. --- .../src/core/clients/storage_client.rs | 40 +++++++++---------- sdk/storage_blobs/src/blob/mod.rs | 4 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/sdk/storage/src/core/clients/storage_client.rs b/sdk/storage/src/core/clients/storage_client.rs index 368fda2ad5..43be209175 100644 --- a/sdk/storage/src/core/clients/storage_client.rs +++ b/sdk/storage/src/core/clients/storage_client.rs @@ -89,29 +89,29 @@ impl StorageClient { // pub fn list_containers(&self) -> crate::container::requests::ListContainersBuilder { // crate::container::requests::ListContainersBuilder::new(self) // } - #[cfg(feature = "queue")] - pub fn list_queues(&self) -> crate::queue::requests::ListQueuesBuilder { - crate::queue::requests::ListQueuesBuilder::new(self) - } + // #[cfg(feature = "queue")] + // pub fn list_queues(&self) -> crate::queue::requests::ListQueuesBuilder { + // crate::queue::requests::ListQueuesBuilder::new(self) + // } - #[cfg(feature = "queue")] - pub fn get_queue_service_properties( - &self, - ) -> crate::queue::requests::GetQueueServicePropertiesBuilder { - crate::queue::requests::GetQueueServicePropertiesBuilder::new(self) - } + // #[cfg(feature = "queue")] + // pub fn get_queue_service_properties( + // &self, + // ) -> crate::queue::requests::GetQueueServicePropertiesBuilder { + // crate::queue::requests::GetQueueServicePropertiesBuilder::new(self) + // } - #[cfg(feature = "queue")] - pub fn set_queue_service_properties( - &self, - ) -> crate::queue::requests::SetQueueServicePropertiesBuilder { - crate::queue::requests::SetQueueServicePropertiesBuilder::new(self) - } + // #[cfg(feature = "queue")] + // pub fn set_queue_service_properties( + // &self, + // ) -> crate::queue::requests::SetQueueServicePropertiesBuilder { + // crate::queue::requests::SetQueueServicePropertiesBuilder::new(self) + // } - #[cfg(feature = "queue")] - pub fn get_queue_service_stats(&self) -> crate::queue::requests::GetQueueServiceStatsBuilder { - crate::queue::requests::GetQueueServiceStatsBuilder::new(self) - } + // #[cfg(feature = "queue")] + // pub fn get_queue_service_stats(&self) -> crate::queue::requests::GetQueueServiceStatsBuilder { + // crate::queue::requests::GetQueueServiceStatsBuilder::new(self) + // } #[allow(dead_code)] pub fn prepare_request( diff --git a/sdk/storage_blobs/src/blob/mod.rs b/sdk/storage_blobs/src/blob/mod.rs index d749c6b8d7..9a86434eba 100644 --- a/sdk/storage_blobs/src/blob/mod.rs +++ b/sdk/storage_blobs/src/blob/mod.rs @@ -21,11 +21,11 @@ use azure_core::headers::{ use azure_core::parsing::from_azure_time; use azure_core::{Etag, LeaseDuration, LeaseState, LeaseStatus}; use azure_storage::core::util::HeaderMapExt; -use azure_storage::core::{ +use azure_storage::headers::CONTENT_CRC64; +use azure_storage::{ headers::{CONTENT_MD5, COPY_ID}, ConsistencyCRC64, ConsistencyMD5, }; -use azure_storage::headers::CONTENT_CRC64; use azure_storage::{CopyId, CopyProgress}; use chrono::{DateTime, Utc}; use http::header; From e32dc73c146c8fb19269648ccf9938d43133f790 Mon Sep 17 00:00:00 2001 From: John Batty Date: Mon, 8 Nov 2021 08:16:27 +0000 Subject: [PATCH 05/13] Rename BaseBlobService to BlobServiceClient. --- sdk/identity/examples/device_code_flow.rs | 4 ++-- .../examples/connection_string.rs | 4 ++-- sdk/storage_blobs/examples/container_00.rs | 4 ++-- sdk/storage_blobs/examples/container_01.rs | 4 ++-- sdk/storage_blobs/examples/list_blobs_00.rs | 4 ++-- sdk/storage_blobs/examples/list_blobs_01.rs | 12 +++++++++-- .../examples/list_containers2.rs | 8 ++++---- ...blob_service.rs => blob_service_client.rs} | 20 +++++++++---------- sdk/storage_blobs/src/clients/mod.rs | 4 ++-- sdk/storage_blobs/src/prelude.rs | 5 +++-- 10 files changed, 39 insertions(+), 30 deletions(-) rename sdk/storage_blobs/src/clients/{base_blob_service.rs => blob_service_client.rs} (50%) diff --git a/sdk/identity/examples/device_code_flow.rs b/sdk/identity/examples/device_code_flow.rs index f9d1e706e9..d8ba528ef2 100644 --- a/sdk/identity/examples/device_code_flow.rs +++ b/sdk/identity/examples/device_code_flow.rs @@ -84,11 +84,11 @@ async fn main() -> Result<(), Box> { authorization.access_token().secret() as &str, ) .as_storage_client(); - let base_blob_service = storage_client.as_base_blob_service(); + let blob_service = storage.as_blob_service_client(); // now we enumerate the containers in the // specified storage account. - let containers = base_blob_service.list_containers().execute().await?; + let containers = blob_service.list_containers().execute().await?; println!("\nList containers completed succesfully: {:?}", containers); // now let's refresh the token, if available diff --git a/sdk/storage_blobs/examples/connection_string.rs b/sdk/storage_blobs/examples/connection_string.rs index 4342f4b5d4..b754e6cc4e 100644 --- a/sdk/storage_blobs/examples/connection_string.rs +++ b/sdk/storage_blobs/examples/connection_string.rs @@ -20,9 +20,9 @@ async fn main() -> Result<(), Box> { StorageAccountClient::new_connection_string(http_client.clone(), &connection_string)? .as_storage_client(); let container = storage_account.as_container_client(&container_name); - let base_blob_service = storage_account.as_base_blob_service(); + let blob_service = storage_account.as_blob_service_client(); - let iv = base_blob_service.list_containers().execute().await?; + let iv = blob_service.list_containers().execute().await?; if iv .incomplete_vector diff --git a/sdk/storage_blobs/examples/container_00.rs b/sdk/storage_blobs/examples/container_00.rs index e9d99af854..358369bcc4 100644 --- a/sdk/storage_blobs/examples/container_00.rs +++ b/sdk/storage_blobs/examples/container_00.rs @@ -18,11 +18,11 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let base_blob_service = storage.as_base_blob_service(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); let max_results = NonZeroU32::new(3).unwrap(); - let iv = base_blob_service + let iv = blob_service .list_containers() .max_results(max_results) .execute() diff --git a/sdk/storage_blobs/examples/container_01.rs b/sdk/storage_blobs/examples/container_01.rs index e5fc9ff26c..2de0804ab7 100644 --- a/sdk/storage_blobs/examples/container_01.rs +++ b/sdk/storage_blobs/examples/container_01.rs @@ -22,10 +22,10 @@ async fn main() -> Result<(), Box> { let storage_account = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let base_blob_service = storage_account.as_base_blob_service(); + let blob_service = storage_account.as_blob_service_client(); let container = storage_account.as_container_client(container_name); - let res = base_blob_service + let res = blob_service .list_containers() .client_request_id("ciccio") .include_metadata(true) diff --git a/sdk/storage_blobs/examples/list_blobs_00.rs b/sdk/storage_blobs/examples/list_blobs_00.rs index c0ba25b672..1fbb747c05 100644 --- a/sdk/storage_blobs/examples/list_blobs_00.rs +++ b/sdk/storage_blobs/examples/list_blobs_00.rs @@ -20,10 +20,10 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let base_blob_service = storage.as_base_blob_service(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(&container_name); - let iv = base_blob_service.list_containers().execute().await?; + let iv = blob_service.list_containers().execute().await?; if iv .incomplete_vector diff --git a/sdk/storage_blobs/examples/list_blobs_01.rs b/sdk/storage_blobs/examples/list_blobs_01.rs index 20e7665383..6ace88117d 100644 --- a/sdk/storage_blobs/examples/list_blobs_01.rs +++ b/sdk/storage_blobs/examples/list_blobs_01.rs @@ -17,14 +17,22 @@ async fn main() -> Result<(), Box> { .nth(1) .expect("please specify container name as command line parameter"); +<<<<<<< HEAD let http_client = azure_core::new_http_client(); let storage_account = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); let base_blob_service = storage_account.as_base_blob_service(); let container = storage_account.as_container_client(&container_name); - - let iv = base_blob_service.list_containers().execute().await?; +======= + let http_client = new_http_client(); + let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_storage_client(); + let blob_service = storage.as_blob_service_client(); + let container = storage.as_container_client(&container_name); +>>>>>>> Rename BaseBlobService to BlobServiceClient. + + let iv = blob_service.list_containers().execute().await?; if iv .incomplete_vector diff --git a/sdk/storage_blobs/examples/list_containers2.rs b/sdk/storage_blobs/examples/list_containers2.rs index eaf16c0720..8861792ba8 100644 --- a/sdk/storage_blobs/examples/list_containers2.rs +++ b/sdk/storage_blobs/examples/list_containers2.rs @@ -23,7 +23,7 @@ async fn main() -> Result<(), Box> { StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); let storage = storage_account.as_storage_client(); - let base_blob_service = storage.as_base_blob_service(); + let blob_service = storage.as_blob_service_client(); let response = storage .as_container_client("azuresdkforrust") @@ -32,7 +32,7 @@ async fn main() -> Result<(), Box> { .await?; println!("key response = {:#?}", response); - let response = base_blob_service.list_containers().execute().await?; + let response = blob_service.list_containers().execute().await?; println!("key response = {:#?}", response); // let's test a SAS token @@ -41,8 +41,8 @@ async fn main() -> Result<(), Box> { let sas_token = "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-12-05T20:20:58Z&st=2020-12-05T12:20:58Z&spr=https&sig=vxUuKjQW4%2FmB884f%2BdqCp4h3O%2BYuYgIJN8RVGHFVFpY%3D"; let storage = StorageAccountClient::new_sas_token(http_client.clone(), &account, sas_token)? .as_storage_client(); - let base_blob_service = storage.as_base_blob_service(); - let response = base_blob_service.list_containers().execute().await?; + let blob_service = storage.as_blob_service_client(); + let response = blob_service.list_containers().execute().await?; println!("sas response = {:#?}", response); Ok(()) diff --git a/sdk/storage_blobs/src/clients/base_blob_service.rs b/sdk/storage_blobs/src/clients/blob_service_client.rs similarity index 50% rename from sdk/storage_blobs/src/clients/base_blob_service.rs rename to sdk/storage_blobs/src/clients/blob_service_client.rs index 001d496f49..1b6e72154b 100644 --- a/sdk/storage_blobs/src/clients/base_blob_service.rs +++ b/sdk/storage_blobs/src/clients/blob_service_client.rs @@ -1,28 +1,28 @@ use azure_storage::core::clients::{AsStorageClient, StorageAccountClient, StorageClient}; use std::sync::Arc; -pub trait AsBaseBlobService { - fn as_base_blob_service(&self) -> Arc; +pub trait AsBlobServiceClient { + fn as_blob_service_client(&self) -> Arc; } -impl AsBaseBlobService for Arc { - fn as_base_blob_service(&self) -> Arc { - BaseBlobService::new(self.clone()) +impl AsBlobServiceClient for Arc { + fn as_blob_service_client(&self) -> Arc { + BlobServiceClient::new(self.clone()) } } -impl AsBaseBlobService for Arc { - fn as_base_blob_service(&self) -> Arc { - self.as_storage_client().as_base_blob_service() +impl AsBlobServiceClient for Arc { + fn as_blob_service_client(&self) -> Arc { + self.as_storage_client().as_blob_service_client() } } #[derive(Debug, Clone)] -pub struct BaseBlobService { +pub struct BlobServiceClient { storage_client: Arc, } -impl BaseBlobService { +impl BlobServiceClient { pub(crate) fn new(storage_client: Arc) -> Arc { Arc::new(Self { storage_client }) } diff --git a/sdk/storage_blobs/src/clients/mod.rs b/sdk/storage_blobs/src/clients/mod.rs index b13b6b51e8..bb1ba3ba7d 100644 --- a/sdk/storage_blobs/src/clients/mod.rs +++ b/sdk/storage_blobs/src/clients/mod.rs @@ -1,5 +1,5 @@ -mod base_blob_service; -pub use base_blob_service::{AsBaseBlobService, BaseBlobService}; +mod blob_service_client; +pub use blob_service_client::{AsBlobServiceClient, BlobServiceClient}; mod container_client; pub use container_client::{AsContainerClient, ContainerClient}; mod container_lease_client; diff --git a/sdk/storage_blobs/src/prelude.rs b/sdk/storage_blobs/src/prelude.rs index f8a5a549a3..926f70d954 100644 --- a/sdk/storage_blobs/src/prelude.rs +++ b/sdk/storage_blobs/src/prelude.rs @@ -1,8 +1,9 @@ pub use super::container::PublicAccess; pub use crate::blob::{Blob, BlobBlockType, BlockList, BlockListType}; pub use crate::clients::{ - AsBaseBlobService, AsBlobClient, AsBlobLeaseClient, AsContainerClient, AsContainerLeaseClient, - BaseBlobService, BlobClient, BlobLeaseClient, ContainerClient, ContainerLeaseClient, + AsBlobClient, AsBlobLeaseClient, AsBlobServiceClient, AsContainerClient, + AsContainerLeaseClient, BlobClient, BlobLeaseClient, BlobServiceClient, ContainerClient, + ContainerLeaseClient, }; pub use crate::{ AccessTier, BlobContentMD5, BlobVersioning, BlockId, ConditionAppendPosition, ConditionMaxSize, From 29208ff96708ccb6ca9a84b9f94e712fa4202b46 Mon Sep 17 00:00:00 2001 From: John Batty Date: Wed, 10 Nov 2021 19:45:38 +0000 Subject: [PATCH 06/13] Fix up merge conflict --- .../src/core/clients/storage_client.rs | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/sdk/storage/src/core/clients/storage_client.rs b/sdk/storage/src/core/clients/storage_client.rs index 43be209175..567f66c099 100644 --- a/sdk/storage/src/core/clients/storage_client.rs +++ b/sdk/storage/src/core/clients/storage_client.rs @@ -85,34 +85,6 @@ impl StorageClient { crate::account::requests::FindBlobsByTagsBuilder::new(self) } - // #[cfg(feature = "blob")] - // pub fn list_containers(&self) -> crate::container::requests::ListContainersBuilder { - // crate::container::requests::ListContainersBuilder::new(self) - // } - // #[cfg(feature = "queue")] - // pub fn list_queues(&self) -> crate::queue::requests::ListQueuesBuilder { - // crate::queue::requests::ListQueuesBuilder::new(self) - // } - - // #[cfg(feature = "queue")] - // pub fn get_queue_service_properties( - // &self, - // ) -> crate::queue::requests::GetQueueServicePropertiesBuilder { - // crate::queue::requests::GetQueueServicePropertiesBuilder::new(self) - // } - - // #[cfg(feature = "queue")] - // pub fn set_queue_service_properties( - // &self, - // ) -> crate::queue::requests::SetQueueServicePropertiesBuilder { - // crate::queue::requests::SetQueueServicePropertiesBuilder::new(self) - // } - - // #[cfg(feature = "queue")] - // pub fn get_queue_service_stats(&self) -> crate::queue::requests::GetQueueServiceStatsBuilder { - // crate::queue::requests::GetQueueServiceStatsBuilder::new(self) - // } - #[allow(dead_code)] pub fn prepare_request( &self, From 9c607f0741fbb71f75e6ebd975dea8eb79e29f26 Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 19 Dec 2021 15:03:23 +0000 Subject: [PATCH 07/13] Fix clippy lints --- sdk/identity/examples/device_code_flow.rs | 4 ++-- sdk/storage_blobs/examples/list_blobs_01.rs | 10 +--------- sdk/storage_blobs/src/clients/blob_client.rs | 16 ++++++++-------- .../src/clients/blob_lease_client.rs | 4 ++-- 4 files changed, 13 insertions(+), 21 deletions(-) diff --git a/sdk/identity/examples/device_code_flow.rs b/sdk/identity/examples/device_code_flow.rs index d8ba528ef2..6e8c692057 100644 --- a/sdk/identity/examples/device_code_flow.rs +++ b/sdk/identity/examples/device_code_flow.rs @@ -78,13 +78,13 @@ async fn main() -> Result<(), Box> { // using the access token. let http_client = azure_core::new_http_client(); - let storage_client = StorageAccountClient::new_bearer_token( + let storage_account = StorageAccountClient::new_bearer_token( http_client.clone(), &storage_account_name, authorization.access_token().secret() as &str, ) .as_storage_client(); - let blob_service = storage.as_blob_service_client(); + let blob_service = storage_account.as_blob_service_client(); // now we enumerate the containers in the // specified storage account. diff --git a/sdk/storage_blobs/examples/list_blobs_01.rs b/sdk/storage_blobs/examples/list_blobs_01.rs index 6ace88117d..e71acb3474 100644 --- a/sdk/storage_blobs/examples/list_blobs_01.rs +++ b/sdk/storage_blobs/examples/list_blobs_01.rs @@ -17,20 +17,12 @@ async fn main() -> Result<(), Box> { .nth(1) .expect("please specify container name as command line parameter"); -<<<<<<< HEAD let http_client = azure_core::new_http_client(); let storage_account = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let base_blob_service = storage_account.as_base_blob_service(); + let blob_service = storage_account.as_blob_service_client(); let container = storage_account.as_container_client(&container_name); -======= - let http_client = new_http_client(); - let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) - .as_storage_client(); - let blob_service = storage.as_blob_service_client(); - let container = storage.as_container_client(&container_name); ->>>>>>> Rename BaseBlobService to BlobServiceClient. let iv = blob_service.list_containers().execute().await?; diff --git a/sdk/storage_blobs/src/clients/blob_client.rs b/sdk/storage_blobs/src/clients/blob_client.rs index 48477f4ca4..4ed673d254 100644 --- a/sdk/storage_blobs/src/clients/blob_client.rs +++ b/sdk/storage_blobs/src/clients/blob_client.rs @@ -89,11 +89,11 @@ impl BlobClient { SetBlobMetadataBuilder::new(self) } - pub fn update_page<'a>( - &'a self, + pub fn update_page( + &self, ba512_range: BA512Range, content: impl Into, - ) -> UpdatePageBuilder<'a> { + ) -> UpdatePageBuilder { UpdatePageBuilder::new(self, ba512_range, content) } @@ -133,19 +133,19 @@ impl BlobClient { PutBlockListBuilder::new(self, block_list) } - pub fn put_block_blob<'a>(&'a self, body: impl Into) -> PutBlockBlobBuilder<'a> { + pub fn put_block_blob(&self, body: impl Into) -> PutBlockBlobBuilder { PutBlockBlobBuilder::new(self, body.into()) } - pub fn append_block<'a>(&'a self, body: impl Into) -> AppendBlockBuilder<'a> { + pub fn append_block(&self, body: impl Into) -> AppendBlockBuilder { AppendBlockBuilder::new(self, body.into()) } - pub fn put_block<'a>( - &'a self, + pub fn put_block( + &self, block_id: impl Into, body: impl Into, - ) -> PutBlockBuilder<'a> { + ) -> PutBlockBuilder { PutBlockBuilder::new(self, block_id, body) } diff --git a/sdk/storage_blobs/src/clients/blob_lease_client.rs b/sdk/storage_blobs/src/clients/blob_lease_client.rs index f3048c9a28..7a956e57be 100644 --- a/sdk/storage_blobs/src/clients/blob_lease_client.rs +++ b/sdk/storage_blobs/src/clients/blob_lease_client.rs @@ -69,11 +69,11 @@ impl BlobLeaseClient { ChangeLeaseBuilder::new(self, proposed_lease_id) } - pub fn release<'a>(&'a self) -> ReleaseLeaseBuilder { + pub fn release(&self) -> ReleaseLeaseBuilder { ReleaseLeaseBuilder::new(self) } - pub fn renew<'a>(&'a self) -> RenewLeaseBuilder { + pub fn renew(&self) -> RenewLeaseBuilder { RenewLeaseBuilder::new(self) } From d669520db223bd14db237c78136605b37eab846f Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 19 Dec 2021 15:21:51 +0000 Subject: [PATCH 08/13] Moved blob storage tests from storage into storage_blobs --- sdk/{storage => storage_blobs}/tests/append_blob.rs | 0 sdk/{storage => storage_blobs}/tests/blob.rs | 0 sdk/{storage => storage_blobs}/tests/page_blob.rs | 0 sdk/{storage => storage_blobs}/tests/stream_blob00.rs | 0 sdk/{storage => storage_blobs}/tests/stream_list_blobs.rs | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename sdk/{storage => storage_blobs}/tests/append_blob.rs (100%) rename sdk/{storage => storage_blobs}/tests/blob.rs (100%) rename sdk/{storage => storage_blobs}/tests/page_blob.rs (100%) rename sdk/{storage => storage_blobs}/tests/stream_blob00.rs (100%) rename sdk/{storage => storage_blobs}/tests/stream_list_blobs.rs (100%) diff --git a/sdk/storage/tests/append_blob.rs b/sdk/storage_blobs/tests/append_blob.rs similarity index 100% rename from sdk/storage/tests/append_blob.rs rename to sdk/storage_blobs/tests/append_blob.rs diff --git a/sdk/storage/tests/blob.rs b/sdk/storage_blobs/tests/blob.rs similarity index 100% rename from sdk/storage/tests/blob.rs rename to sdk/storage_blobs/tests/blob.rs diff --git a/sdk/storage/tests/page_blob.rs b/sdk/storage_blobs/tests/page_blob.rs similarity index 100% rename from sdk/storage/tests/page_blob.rs rename to sdk/storage_blobs/tests/page_blob.rs diff --git a/sdk/storage/tests/stream_blob00.rs b/sdk/storage_blobs/tests/stream_blob00.rs similarity index 100% rename from sdk/storage/tests/stream_blob00.rs rename to sdk/storage_blobs/tests/stream_blob00.rs diff --git a/sdk/storage/tests/stream_list_blobs.rs b/sdk/storage_blobs/tests/stream_list_blobs.rs similarity index 100% rename from sdk/storage/tests/stream_list_blobs.rs rename to sdk/storage_blobs/tests/stream_list_blobs.rs From 587834167234f88e14609f62f4f6cd12f71de0cf Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 19 Dec 2021 16:16:45 +0000 Subject: [PATCH 09/13] e2e test fixes --- sdk/storage/Cargo.toml | 8 +++----- sdk/storage_blobs/Cargo.toml | 2 ++ sdk/storage_blobs/src/container/mod.rs | 9 --------- sdk/storage_blobs/tests/append_blob.rs | 7 ++++--- sdk/storage_blobs/tests/blob.rs | 19 ++++++++++++------- .../tests/container.rs | 4 ++-- sdk/storage_blobs/tests/page_blob.rs | 5 +++-- sdk/storage_blobs/tests/stream_blob00.rs | 5 +++-- sdk/storage_blobs/tests/stream_list_blobs.rs | 5 +++-- 9 files changed, 32 insertions(+), 32 deletions(-) rename sdk/{storage => storage_blobs}/tests/container.rs (96%) diff --git a/sdk/storage/Cargo.toml b/sdk/storage/Cargo.toml index fc65b0e9bd..6842e8279f 100644 --- a/sdk/storage/Cargo.toml +++ b/sdk/storage/Cargo.toml @@ -40,14 +40,12 @@ azure_identity = { path = "../identity" } reqwest = "0.11" [features] -default = ["account", "blob", "queue", "table", "data_lake", "enable_reqwest"] -test_e2e = ["account", "blob", "queue", "table", "data_lake"] +default = ["account", "table", "data_lake", "enable_reqwest"] +test_e2e = ["account", "table", "data_lake"] mock_transport_framework = [ "azure_core/mock_transport_framework"] -test_integration = ["account", "blob", "queue", "table", "data_lake"] +test_integration = ["account", "table", "data_lake"] account = [] azurite_workaround = [] -blob = [] -queue = [] table = [] data_lake = [] enable_reqwest = ["azure_core/enable_reqwest"] diff --git a/sdk/storage_blobs/Cargo.toml b/sdk/storage_blobs/Cargo.toml index 056c0b4afe..839c60ebe6 100644 --- a/sdk/storage_blobs/Cargo.toml +++ b/sdk/storage_blobs/Cargo.toml @@ -36,3 +36,5 @@ env_logger = "0.8" azure_identity = { path = "../identity" } reqwest = "0.11" +[features] +test_e2e = [] diff --git a/sdk/storage_blobs/src/container/mod.rs b/sdk/storage_blobs/src/container/mod.rs index 8b283b0d31..6444c4e4d0 100644 --- a/sdk/storage_blobs/src/container/mod.rs +++ b/sdk/storage_blobs/src/container/mod.rs @@ -9,15 +9,6 @@ use azure_core::headers::{ }; use azure_core::{LeaseDuration, LeaseState, LeaseStatus}; use azure_storage::parsing_xml::{cast_must, cast_optional, traverse}; -// use azure_core::incompletevector::IncompleteVector; -// use azure_core::{ -// headers::{ -// BLOB_PUBLIC_ACCESS, HAS_IMMUTABILITY_POLICY, HAS_LEGAL_HOLD, LEASE_DURATION, LEASE_STATE, -// LEASE_STATUS, META_PREFIX, -// }, -// lease::{LeaseDuration, LeaseState, LeaseStatus}, -// }; -// use azure_storage::core::parsing_xml::{cast_must, cast_optional, traverse}; use chrono::{DateTime, Utc}; use http::request::Builder; use http::{header, HeaderMap}; diff --git a/sdk/storage_blobs/tests/append_blob.rs b/sdk/storage_blobs/tests/append_blob.rs index 080e763b79..185cfe42d2 100644 --- a/sdk/storage_blobs/tests/append_blob.rs +++ b/sdk/storage_blobs/tests/append_blob.rs @@ -3,9 +3,9 @@ extern crate log; use azure_core::prelude::*; -use azure_storage::blob::container::PublicAccess; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::container::PublicAccess; +use azure_storage_blobs::prelude::*; use bytes::Bytes; #[tokio::test] @@ -23,10 +23,11 @@ async fn put_append_blob() { let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); let blob = container.as_blob_client(blob_name); - if storage + if blob_service .list_containers() .execute() .await diff --git a/sdk/storage_blobs/tests/blob.rs b/sdk/storage_blobs/tests/blob.rs index 874cb1928e..ed92780891 100644 --- a/sdk/storage_blobs/tests/blob.rs +++ b/sdk/storage_blobs/tests/blob.rs @@ -3,12 +3,12 @@ extern crate log; use azure_core::prelude::*; -use azure_storage::blob::{ +use azure_storage::core::prelude::*; +use azure_storage_blobs::{ blob::BlockListType, container::{Container, PublicAccess}, prelude::*, }; -use azure_storage::core::prelude::*; use bytes::Bytes; use chrono::{FixedOffset, Utc}; use std::ops::Add; @@ -23,6 +23,7 @@ async fn create_and_delete_container() { let name: &'static str = "azuresdkrustetoets"; let storage_client = initialize().as_storage_client(); + let blob_service = storage_client.as_blob_service_client(); let container = storage_client.as_container_client(name); container @@ -70,7 +71,7 @@ async fn create_and_delete_container() { let res = container.get_properties().execute().await.unwrap(); assert!(res.container.public_access == PublicAccess::None); - let list = storage_client + let list = blob_service .list_containers() .prefix(name) .execute() @@ -202,13 +203,14 @@ async fn put_and_get_block_list() { #[tokio::test] async fn list_containers() { let storage = initialize().as_storage_client(); + let blob_service = storage.as_blob_service_client(); trace!("running list_containers"); let mut next_marker = None; loop { let ret = { - let builder = storage + let builder = blob_service .list_containers() .max_results(std::num::NonZeroU32::new(2u32).unwrap()); if let Some(nm) = next_marker { @@ -234,10 +236,11 @@ async fn put_block_blob() { let data = Bytes::from_static(b"abcdef"); let storage = initialize().as_storage_client(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); let blob = container.as_blob_client(blob_name); - if storage + if blob_service .list_containers() .execute() .await @@ -275,10 +278,11 @@ async fn copy_blob() { let data = Bytes::from_static(b"abcdef"); let storage = initialize().as_storage_client(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); let blob = container.as_blob_client(blob_name); - if storage + if blob_service .list_containers() .execute() .await @@ -335,10 +339,11 @@ async fn put_block_blob_and_get_properties() { let data = Bytes::from_static(b"abcdef"); let storage = initialize().as_storage_client(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); let blob = container.as_blob_client(blob_name); - if storage + if blob_service .list_containers() .execute() .await diff --git a/sdk/storage/tests/container.rs b/sdk/storage_blobs/tests/container.rs similarity index 96% rename from sdk/storage/tests/container.rs rename to sdk/storage_blobs/tests/container.rs index b463573104..f4051c44ac 100644 --- a/sdk/storage/tests/container.rs +++ b/sdk/storage_blobs/tests/container.rs @@ -1,7 +1,7 @@ #![cfg(all(test, feature = "test_e2e"))] -use azure_storage::blob::container::PublicAccess; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::container::PublicAccess; +use azure_storage_blobs::prelude::*; use std::sync::Arc; use std::time::Duration; diff --git a/sdk/storage_blobs/tests/page_blob.rs b/sdk/storage_blobs/tests/page_blob.rs index 017f6c3ecd..1d24d5c5d0 100644 --- a/sdk/storage_blobs/tests/page_blob.rs +++ b/sdk/storage_blobs/tests/page_blob.rs @@ -2,8 +2,8 @@ #[macro_use] extern crate log; use azure_core::prelude::*; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use std::sync::Arc; #[tokio::test] @@ -12,10 +12,11 @@ async fn put_page_blob() { let container_name: &'static str = "rust-upload-test"; let storage = initialize().as_storage_client(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); let blob = container.as_blob_client(blob_name); - if storage + if blob_service .list_containers() .execute() .await diff --git a/sdk/storage_blobs/tests/stream_blob00.rs b/sdk/storage_blobs/tests/stream_blob00.rs index 6821491e1c..c102b4c1b0 100644 --- a/sdk/storage_blobs/tests/stream_blob00.rs +++ b/sdk/storage_blobs/tests/stream_blob00.rs @@ -1,7 +1,7 @@ #![cfg(all(test, feature = "test_e2e"))] use azure_core::prelude::*; -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; #[tokio::test] @@ -23,10 +23,11 @@ async fn code() -> Result<(), Box> { let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); let blob = container.as_blob_client(file_name); - if storage + if blob_service .list_containers() .execute() .await? diff --git a/sdk/storage_blobs/tests/stream_list_blobs.rs b/sdk/storage_blobs/tests/stream_list_blobs.rs index 97cd1da696..d188d381de 100644 --- a/sdk/storage_blobs/tests/stream_list_blobs.rs +++ b/sdk/storage_blobs/tests/stream_list_blobs.rs @@ -1,6 +1,6 @@ #![cfg(all(test, feature = "test_e2e"))] -use azure_storage::blob::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_blobs::prelude::*; use futures::stream::StreamExt; use std::time::Duration; @@ -18,9 +18,10 @@ async fn stream_list_blobs() { let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); + let blob_service = storage.as_blob_service_client(); let container = storage.as_container_client(container_name); - let iv = storage.list_containers().execute().await.unwrap(); + let iv = blob_service.list_containers().execute().await.unwrap(); if iv .incomplete_vector From be4680700a72985752af03228b86d3a7f110f7cb Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 19 Dec 2021 16:36:12 +0000 Subject: [PATCH 10/13] Add new storage crates to github workflow. Fix storage_queues e2e tests. --- .github/workflows/build.yml | 2 +- sdk/storage_queues/Cargo.toml | 3 +++ sdk/storage_queues/tests/queue.rs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 116df88d2f..f85a5fa6b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -143,7 +143,7 @@ jobs: - name: e2e tests build run: | - PROJECTS=(core cosmos identity messaging_servicebus storage) + PROJECTS=(core cosmos identity messaging_servicebus storage storage_blobs storage_queues) for PROJ in ${PROJECTS[@]} do echo "Checking e2e tests for $PROJ" diff --git a/sdk/storage_queues/Cargo.toml b/sdk/storage_queues/Cargo.toml index 07914f9ad4..1c1f1d08f2 100644 --- a/sdk/storage_queues/Cargo.toml +++ b/sdk/storage_queues/Cargo.toml @@ -29,3 +29,6 @@ url = "2.2" [dev-dependencies] tokio = { version = "1.0", features = ["full"] } + +[features] +test_e2e = [] diff --git a/sdk/storage_queues/tests/queue.rs b/sdk/storage_queues/tests/queue.rs index 885acf4dfd..e13bd0b154 100644 --- a/sdk/storage_queues/tests/queue.rs +++ b/sdk/storage_queues/tests/queue.rs @@ -1,7 +1,7 @@ #![cfg(all(test, feature = "test_e2e"))] use azure_core::prelude::*; -use azure_messaging_queues::prelude::*; use azure_storage::core::prelude::*; +use azure_storage_queues::prelude::*; use chrono::Utc; use std::error::Error; use std::time::Duration; From d37aa5832b55e8f9d09038bb77fe4cb33d90f06a Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 19 Dec 2021 19:42:58 +0000 Subject: [PATCH 11/13] Implement AsContainerClient for StorageAccountClient --- sdk/identity/examples/device_code_flow.rs | 9 ++++----- sdk/storage_blobs/src/clients/container_client.rs | 10 +++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/sdk/identity/examples/device_code_flow.rs b/sdk/identity/examples/device_code_flow.rs index 6e8c692057..f8881af609 100644 --- a/sdk/identity/examples/device_code_flow.rs +++ b/sdk/identity/examples/device_code_flow.rs @@ -78,17 +78,16 @@ async fn main() -> Result<(), Box> { // using the access token. let http_client = azure_core::new_http_client(); - let storage_account = StorageAccountClient::new_bearer_token( + let storage_account_client = StorageAccountClient::new_bearer_token( http_client.clone(), &storage_account_name, authorization.access_token().secret() as &str, - ) - .as_storage_client(); - let blob_service = storage_account.as_blob_service_client(); + ); + let blob_service_client = storage_account_client.as_blob_service_client(); // now we enumerate the containers in the // specified storage account. - let containers = blob_service.list_containers().execute().await?; + let containers = blob_service_client.list_containers().execute().await?; println!("\nList containers completed succesfully: {:?}", containers); // now let's refresh the token, if available diff --git a/sdk/storage_blobs/src/clients/container_client.rs b/sdk/storage_blobs/src/clients/container_client.rs index d2a85191de..ca7a262212 100644 --- a/sdk/storage_blobs/src/clients/container_client.rs +++ b/sdk/storage_blobs/src/clients/container_client.rs @@ -2,7 +2,9 @@ use crate::container::requests::*; use crate::prelude::PublicAccess; use azure_core::prelude::*; use azure_core::HttpClient; -use azure_storage::core::clients::{StorageAccountClient, StorageClient, StorageCredentials}; +use azure_storage::core::clients::{ + AsStorageClient, StorageAccountClient, StorageClient, StorageCredentials, +}; use azure_storage::shared_access_signature::{ service_sas::{BlobSharedAccessSignatureBuilder, BlobSignedResource, SetResources}, SasToken, @@ -22,6 +24,12 @@ impl> AsContainerClient for Arc { } } +impl> AsContainerClient for Arc { + fn as_container_client(&self, container_name: CN) -> Arc { + self.as_storage_client().as_container_client(container_name) + } +} + #[derive(Debug, Clone)] pub struct ContainerClient { storage_client: Arc, From 64bb935dd42c2aef52d890e45f7f8d39e54f22f0 Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 19 Dec 2021 20:52:44 +0000 Subject: [PATCH 12/13] Changed examples to be more consistent --- sdk/storage_blobs/examples/blob_00.rs | 1 - sdk/storage_blobs/examples/blob_01.rs | 10 +++--- .../examples/blob_02_bearer_token.rs | 13 +++---- sdk/storage_blobs/examples/blob_04.rs | 17 ++++----- .../examples/blob_05_default_credential.rs | 13 +++---- sdk/storage_blobs/examples/blob_range.rs | 35 ++++++++++++------- .../examples/connection_string.rs | 21 ++++++----- sdk/storage_blobs/examples/container_00.rs | 13 +++---- sdk/storage_blobs/examples/container_01.rs | 22 ++++++------ .../examples/container_and_blob.rs | 14 ++++---- sdk/storage_blobs/examples/copy_blob.rs | 2 -- .../examples/copy_blob_from_url.rs | 5 ++- sdk/storage_blobs/examples/count_blobs.rs | 5 ++- sdk/storage_blobs/examples/emulator_00.rs | 6 ++-- sdk/storage_blobs/examples/list_blobs_00.rs | 19 +++++----- sdk/storage_blobs/examples/list_blobs_01.rs | 32 ++++++++--------- sdk/storage_blobs/examples/list_blobs_02.rs | 8 ++--- .../examples/list_containers2.rs | 16 ++++----- .../examples/put_append_blob_00.rs | 14 ++++---- .../examples/put_block_blob_00.rs | 31 ++++++++-------- .../examples/put_page_blob_00.rs | 20 ++++++----- .../examples/shared_access_signature.rs | 4 +-- sdk/storage_blobs/examples/stream_blob_00.rs | 17 +++++---- sdk/storage_blobs/examples/stream_blob_01.rs | 16 ++++----- 24 files changed, 176 insertions(+), 178 deletions(-) diff --git a/sdk/storage_blobs/examples/blob_00.rs b/sdk/storage_blobs/examples/blob_00.rs index 6167f4af0d..46e915a7a2 100644 --- a/sdk/storage_blobs/examples/blob_00.rs +++ b/sdk/storage_blobs/examples/blob_00.rs @@ -22,7 +22,6 @@ async fn main() -> Result<(), Box> { .expect("please specify blob name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); diff --git a/sdk/storage_blobs/examples/blob_01.rs b/sdk/storage_blobs/examples/blob_01.rs index 62991e2355..6bf5005e01 100644 --- a/sdk/storage_blobs/examples/blob_01.rs +++ b/sdk/storage_blobs/examples/blob_01.rs @@ -17,13 +17,13 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = + let storage_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let container = storage_account.as_container_client(&container_name); - let blob = container.as_blob_client("SorgeniaReorganizeRebuildIndexes.zip"); + let container_client = storage_client.as_container_client(&container_name); + let blob_client = container_client.as_blob_client("SorgeniaReorganizeRebuildIndexes.zip"); - let _res = container + let _res = container_client .list_blobs() .include_copy(true) .include_deleted(true) @@ -33,7 +33,7 @@ async fn main() -> Result<(), Box> { .execute() .await?; - let result = blob.get().execute().await?; + let result = blob_client.get().execute().await?; println!("{:?}", result); diff --git a/sdk/storage_blobs/examples/blob_02_bearer_token.rs b/sdk/storage_blobs/examples/blob_02_bearer_token.rs index 770357eb12..aa96d4dc84 100644 --- a/sdk/storage_blobs/examples/blob_02_bearer_token.rs +++ b/sdk/storage_blobs/examples/blob_02_bearer_token.rs @@ -23,17 +23,14 @@ async fn main() -> Result<(), Box> { .expect("please specify the bearer token as fourth command line parameter"); let http_client = azure_core::new_http_client(); - - let storage_account_client = - StorageAccountClient::new_bearer_token(http_client.clone(), &account, bearer_token); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container) - .as_blob_client(&blob); + let blob_client = + StorageAccountClient::new_bearer_token(http_client.clone(), &account, bearer_token) + .as_container_client(&container) + .as_blob_client(&blob); trace!("Requesting blob"); - let response = blob.get().execute().await?; + let response = blob_client.get().execute().await?; let s_content = String::from_utf8(response.data.to_vec())?; println!("blob == {:?}", blob); diff --git a/sdk/storage_blobs/examples/blob_04.rs b/sdk/storage_blobs/examples/blob_04.rs index 354a925b72..34b8aec3de 100644 --- a/sdk/storage_blobs/examples/blob_04.rs +++ b/sdk/storage_blobs/examples/blob_04.rs @@ -18,13 +18,10 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - - let storage_account_client = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container_name) - .as_blob_client("test1"); + let blob_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_container_client(&container_name) + .as_blob_client("test1"); // this example fills a 1 KB file with ASCII text and // sends it in chunks of 256 bytes (4 chunks). @@ -47,7 +44,7 @@ async fn main() -> Result<(), Box> { block_ids.push(block_id.clone()); let hash = md5::compute(slice.clone()).into(); - let put_block_response = blob + let put_block_response = blob_client .put_block(block_id, slice) .hash(&hash) .execute() @@ -61,14 +58,14 @@ async fn main() -> Result<(), Box> { block_list.blocks.push(BlobBlockType::new_uncommitted(id)); } - let res = blob + let res = blob_client .put_block_list(&block_list) .content_md5(md5::compute(data)) .execute() .await?; println!("PutBlockList == {:?}", res); - let retrieved_blob = blob.get().execute().await?; + let retrieved_blob = blob_client.get().execute().await?; println!("retrieved_blob == {:?}", retrieved_blob); let s = String::from_utf8(retrieved_blob.data.to_vec())?; diff --git a/sdk/storage_blobs/examples/blob_05_default_credential.rs b/sdk/storage_blobs/examples/blob_05_default_credential.rs index 1805f9ee09..75c06618c2 100644 --- a/sdk/storage_blobs/examples/blob_05_default_credential.rs +++ b/sdk/storage_blobs/examples/blob_05_default_credential.rs @@ -27,20 +27,17 @@ async fn main() -> Result<(), Box> { .await?; let http_client = azure_core::new_http_client(); - - let storage_account_client = StorageAccountClient::new_bearer_token( + let blob_client = StorageAccountClient::new_bearer_token( http_client.clone(), &account, bearer_token.token.secret(), - ); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container) - .as_blob_client(&blob); + ) + .as_container_client(&container) + .as_blob_client(&blob); trace!("Requesting blob"); - let response = blob.get().execute().await?; + let response = blob_client.get().execute().await?; let s_content = String::from_utf8(response.data.to_vec())?; println!("blob == {:?}", blob); diff --git a/sdk/storage_blobs/examples/blob_range.rs b/sdk/storage_blobs/examples/blob_range.rs index 28dc6c49c4..5c2c66e586 100644 --- a/sdk/storage_blobs/examples/blob_range.rs +++ b/sdk/storage_blobs/examples/blob_range.rs @@ -20,13 +20,10 @@ async fn main() -> Result<(), Box> { .expect("please specify blob name as command line parameter"); let http_client = azure_core::new_http_client(); - - let storage_account_client = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container) - .as_blob_client(&blob); + let blob_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_container_client(&container) + .as_blob_client(&blob); // 1024 G, 512 H and 2048 I let mut buf: Vec = Vec::with_capacity(1024 * 4); @@ -37,31 +34,43 @@ async fn main() -> Result<(), Box> { let content = std::str::from_utf8(&buf)?.to_owned(); println!("content == {}", content); - let _response = blob.put_block_blob(buf.clone()).execute().await?; + let _response = blob_client.put_block_blob(buf.clone()).execute().await?; - let whole = blob.get().execute().await?; + let whole = blob_client.get().execute().await?; assert_eq!(whole.data.len(), buf.len()); - let chunk0 = blob.get().range(Range::new(0, 1024)).execute().await?; + let chunk0 = blob_client + .get() + .range(Range::new(0, 1024)) + .execute() + .await?; assert_eq!(chunk0.data.len(), 1024); for i in 0..1024 { assert_eq!(chunk0.data[i], 71); } - let chunk1 = blob.get().range(Range::new(1024, 1536)).execute().await?; + let chunk1 = blob_client + .get() + .range(Range::new(1024, 1536)) + .execute() + .await?; assert_eq!(chunk1.data.len(), 512); for i in 0..512 { assert_eq!(chunk1.data[i], 72); } - let chunk2 = blob.get().range(Range::new(1536, 3584)).execute().await?; + let chunk2 = blob_client + .get() + .range(Range::new(1536, 3584)) + .execute() + .await?; assert_eq!(chunk2.data.len(), 2048); for i in 0..2048 { assert_eq!(chunk2.data[i], 73); } - let mut stream = Box::pin(blob.get().stream(512)); + let mut stream = Box::pin(blob_client.get().stream(512)); println!("\nStreaming"); let mut chunk: usize = 0; diff --git a/sdk/storage_blobs/examples/connection_string.rs b/sdk/storage_blobs/examples/connection_string.rs index b754e6cc4e..7c9f2c0747 100644 --- a/sdk/storage_blobs/examples/connection_string.rs +++ b/sdk/storage_blobs/examples/connection_string.rs @@ -16,11 +16,11 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = + let storage_client = StorageAccountClient::new_connection_string(http_client.clone(), &connection_string)? .as_storage_client(); - let container = storage_account.as_container_client(&container_name); - let blob_service = storage_account.as_blob_service_client(); + let container_client = storage_client.as_container_client(&container_name); + let blob_service = storage_client.as_blob_service_client(); let iv = blob_service.list_containers().execute().await?; @@ -33,7 +33,7 @@ async fn main() -> Result<(), Box> { } // create the container - container + container_client .create() .public_access(PublicAccess::None) .timeout(Duration::from_secs(100)) @@ -43,7 +43,7 @@ async fn main() -> Result<(), Box> { // create 10 blobs for i in 0..10u8 { - container + container_client .as_blob_client(format!("blob{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -53,7 +53,7 @@ async fn main() -> Result<(), Box> { } let max_results = NonZeroU32::new(3).unwrap(); - let iv = container + let iv = container_client .list_blobs() .max_results(max_results) .execute() @@ -64,7 +64,12 @@ async fn main() -> Result<(), Box> { println!("\t{}\t{} bytes", cont.name, cont.properties.content_length); } - let mut stream = Box::pin(container.list_blobs().max_results(max_results).stream()); + let mut stream = Box::pin( + container_client + .list_blobs() + .max_results(max_results) + .stream(), + ); let mut cnt: i32 = 0; while let Some(value) = stream.next().await { @@ -78,7 +83,7 @@ async fn main() -> Result<(), Box> { cnt += 1; } - container.delete().execute().await?; + container_client.delete().execute().await?; println!("Container {} deleted", container_name); Ok(()) diff --git a/sdk/storage_blobs/examples/container_00.rs b/sdk/storage_blobs/examples/container_00.rs index 358369bcc4..624dd6feac 100644 --- a/sdk/storage_blobs/examples/container_00.rs +++ b/sdk/storage_blobs/examples/container_00.rs @@ -16,13 +16,14 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) - .as_storage_client(); - let blob_service = storage.as_blob_service_client(); - let container = storage.as_container_client(container_name); + let storage_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_storage_client(); + let blob_service_client = storage_client.as_blob_service_client(); + let container_client = storage_client.as_container_client(container_name); let max_results = NonZeroU32::new(3).unwrap(); - let iv = blob_service + let iv = blob_service_client .list_containers() .max_results(max_results) .execute() @@ -35,7 +36,7 @@ async fn main() -> Result<(), Box> { println!("\t{}", cont.name); } - let iv = container + let iv = container_client .list_blobs() .max_results(max_results) .execute() diff --git a/sdk/storage_blobs/examples/container_01.rs b/sdk/storage_blobs/examples/container_01.rs index 2de0804ab7..09110c7840 100644 --- a/sdk/storage_blobs/examples/container_01.rs +++ b/sdk/storage_blobs/examples/container_01.rs @@ -19,13 +19,13 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = + let storage_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let blob_service = storage_account.as_blob_service_client(); - let container = storage_account.as_container_client(container_name); + let blob_service_client = storage_client.as_blob_service_client(); + let container_client = storage_client.as_container_client(container_name); - let res = blob_service + let res = blob_service_client .list_containers() .client_request_id("ciccio") .include_metadata(true) @@ -42,7 +42,7 @@ async fn main() -> Result<(), Box> { // 1 - The various parameters are clearly defined. // 2 - If you forget a mandatory parameter the code won't compile. Type checking at compile // time is waaay better than doing it at runtime! - container + container_client .create() .public_access(PublicAccess::Container) .metadata(&metadata) @@ -51,7 +51,7 @@ async fn main() -> Result<(), Box> { .await?; // get acl without stored access policy list - let result = container.get_acl().execute().await?; + let result = container_client.get_acl().execute().await?; println!("\nget_acl() == {:?}", result); // set stored acess policy list @@ -62,14 +62,14 @@ async fn main() -> Result<(), Box> { sapl.stored_access .push(StoredAccessPolicy::new("pollo", dt_start, dt_end, "rwd")); - let _result = container + let _result = container_client .set_acl(PublicAccess::Blob) .stored_access_policy_list(&sapl) .execute() .await?; // now we get back the acess policy list and compare to the one created - let result = container.get_acl().execute().await?; + let result = container_client.get_acl().execute().await?; println!("\nget_acl() == {:?}", result); @@ -93,16 +93,16 @@ async fn main() -> Result<(), Box> { assert!(i1.permission == i2.permission); } - let res = container.get_properties().execute().await?; + let res = container_client.get_properties().execute().await?; println!("\nget_properties() == {:?}", res); - let res = container + let res = container_client .acquire_lease(Duration::from_secs(15)) .execute() .await?; println!("\nacquire_lease() == {:?}", res); - container + container_client .delete() .lease_id(&res.lease_id) // we need to specify the lease or it won't work! .execute() diff --git a/sdk/storage_blobs/examples/container_and_blob.rs b/sdk/storage_blobs/examples/container_and_blob.rs index 3477696f58..c9cb4b0a35 100644 --- a/sdk/storage_blobs/examples/container_and_blob.rs +++ b/sdk/storage_blobs/examples/container_and_blob.rs @@ -17,13 +17,13 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = + let storage_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let container = storage_account.as_container_client(&container_name); + let container_client = storage_client.as_container_client(&container_name); // create container - let res = container + let res = container_client .create() .public_access(PublicAccess::None) .execute() @@ -36,7 +36,7 @@ async fn main() -> Result<(), Box> { // spurious data to be uploaded. let hash = md5::compute(&data[..]).into(); - let res = container + let res = container_client .as_blob_client("blob0.txt") .put_block_blob(data.clone()) .content_type("text/plain") @@ -45,7 +45,7 @@ async fn main() -> Result<(), Box> { .await?; println!("{:?}", res); - let res = container + let res = container_client .as_blob_client("blob1.txt") .put_block_blob(data.clone()) .content_type("text/plain") @@ -54,7 +54,7 @@ async fn main() -> Result<(), Box> { .await?; println!("{:?}", res); - let res = container + let res = container_client .as_blob_client("blob2.txt") .put_block_blob(data) .content_type("text/plain") @@ -63,7 +63,7 @@ async fn main() -> Result<(), Box> { .await?; println!("{:?}", res); - let res = container + let res = container_client .list_blobs() .include_metadata(true) .execute() diff --git a/sdk/storage_blobs/examples/copy_blob.rs b/sdk/storage_blobs/examples/copy_blob.rs index 5ed15bada6..fe3624f2dc 100644 --- a/sdk/storage_blobs/examples/copy_blob.rs +++ b/sdk/storage_blobs/examples/copy_blob.rs @@ -37,7 +37,6 @@ async fn main() -> Result<(), Box> { &source_master_key, ); let source_blob = source_storage_account_client - .as_storage_client() .as_container_client(&source_container_name) .as_blob_client(&source_blob_name); @@ -46,7 +45,6 @@ async fn main() -> Result<(), Box> { &destination_account, &destination_master_key, ) - .as_storage_client() .as_container_client(&destination_container_name) .as_blob_client(&destination_blob_name); diff --git a/sdk/storage_blobs/examples/copy_blob_from_url.rs b/sdk/storage_blobs/examples/copy_blob_from_url.rs index 60effd1a09..0bc49e8e07 100644 --- a/sdk/storage_blobs/examples/copy_blob_from_url.rs +++ b/sdk/storage_blobs/examples/copy_blob_from_url.rs @@ -24,11 +24,10 @@ async fn main() -> Result<(), Box> { .expect("please specify destination blob name as fourth command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client + let blob_client = storage_client .as_container_client(&destination_container) .as_blob_client(&destination_blob); @@ -39,7 +38,7 @@ async fn main() -> Result<(), Box> { source_blob ); - let response = blob + let response = blob_client .copy_from_url(&source_url) .is_synchronous(true) .execute() diff --git a/sdk/storage_blobs/examples/count_blobs.rs b/sdk/storage_blobs/examples/count_blobs.rs index 97da3b695a..6c95f9b0c0 100644 --- a/sdk/storage_blobs/examples/count_blobs.rs +++ b/sdk/storage_blobs/examples/count_blobs.rs @@ -15,13 +15,12 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let container = + let container_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) - .as_storage_client() .as_container_client(&container); let mut count: usize = 0; - let mut list_blobs = Box::pin(container.list_blobs().stream()); + let mut list_blobs = Box::pin(container_client.list_blobs().stream()); while let Some(list_blobs_response) = list_blobs.next().await { let list_blobs_response = list_blobs_response?; count += list_blobs_response.blobs.blobs.len(); diff --git a/sdk/storage_blobs/examples/emulator_00.rs b/sdk/storage_blobs/examples/emulator_00.rs index d233f9e3a1..3d715f9de4 100644 --- a/sdk/storage_blobs/examples/emulator_00.rs +++ b/sdk/storage_blobs/examples/emulator_00.rs @@ -8,17 +8,17 @@ async fn main() -> Result<(), Box> { // this is how you use the emulator. let storage_account = StorageAccountClient::new_emulator_default().as_storage_client(); - let container = storage_account.as_container_client("emulcont"); + let container_client = storage_account.as_container_client("emulcont"); // create container - let res = container + let res = container_client .create() .public_access(PublicAccess::None) .execute() .await?; println!("{:?}", res); - let res = container + let res = container_client .list_blobs() .include_metadata(true) .execute() diff --git a/sdk/storage_blobs/examples/list_blobs_00.rs b/sdk/storage_blobs/examples/list_blobs_00.rs index 1fbb747c05..e1248fab31 100644 --- a/sdk/storage_blobs/examples/list_blobs_00.rs +++ b/sdk/storage_blobs/examples/list_blobs_00.rs @@ -18,10 +18,11 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) - .as_storage_client(); - let blob_service = storage.as_blob_service_client(); - let container = storage.as_container_client(&container_name); + let storage_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_storage_client(); + let blob_service = storage_client.as_blob_service_client(); + let container_client = storage_client.as_container_client(&container_name); let iv = blob_service.list_containers().execute().await?; @@ -34,7 +35,7 @@ async fn main() -> Result<(), Box> { } // create the container - container + container_client .create() .public_access(PublicAccess::None) .timeout(Duration::from_secs(100)) @@ -44,7 +45,7 @@ async fn main() -> Result<(), Box> { // create 10 blobs for i in 0..10u8 { - container + container_client .as_blob_client(format!("blob{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -53,7 +54,7 @@ async fn main() -> Result<(), Box> { println!("\tAdded blob {}", i); } - let iv = container + let iv = container_client .list_blobs() .max_results(NonZeroU32::new(3u32).unwrap()) .execute() @@ -65,7 +66,7 @@ async fn main() -> Result<(), Box> { } let mut stream = Box::pin( - container + container_client .list_blobs() .max_results(NonZeroU32::new(3u32).unwrap()) .stream(), @@ -83,7 +84,7 @@ async fn main() -> Result<(), Box> { cnt += 1; } - container.delete().execute().await?; + container_client.delete().execute().await?; println!("Container {} deleted", container_name); Ok(()) diff --git a/sdk/storage_blobs/examples/list_blobs_01.rs b/sdk/storage_blobs/examples/list_blobs_01.rs index e71acb3474..14e18b4717 100644 --- a/sdk/storage_blobs/examples/list_blobs_01.rs +++ b/sdk/storage_blobs/examples/list_blobs_01.rs @@ -18,13 +18,13 @@ async fn main() -> Result<(), Box> { .expect("please specify container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = + let storage_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - let blob_service = storage_account.as_blob_service_client(); - let container = storage_account.as_container_client(&container_name); + let blob_service_client = storage_client.as_blob_service_client(); + let container_client = storage_client.as_container_client(&container_name); - let iv = blob_service.list_containers().execute().await?; + let iv = blob_service_client.list_containers().execute().await?; if iv .incomplete_vector @@ -35,7 +35,7 @@ async fn main() -> Result<(), Box> { } // create the container - container + container_client .create() .public_access(PublicAccess::None) .timeout(Duration::from_secs(100)) @@ -45,7 +45,7 @@ async fn main() -> Result<(), Box> { println!("Checking that container is empty"); - let iv = container + let iv = container_client .list_blobs() .max_results(NonZeroU32::new(100u32).unwrap()) .delimiter("/") @@ -58,7 +58,7 @@ async fn main() -> Result<(), Box> { // create 4 root blobs for i in 0..4u8 { - container + container_client .as_blob_client(format!("blob_at_root{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -68,7 +68,7 @@ async fn main() -> Result<(), Box> { // create 3 firstfolder/ blobs for i in 0..3u8 { - container + container_client .as_blob_client(format!("firstfolder/blob_at_1stfolder{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -78,7 +78,7 @@ async fn main() -> Result<(), Box> { // create 3 secondroot/ blobs for i in 0..3u8 { - container + container_client .as_blob_client(format!("secondroot/blobsd{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -88,7 +88,7 @@ async fn main() -> Result<(), Box> { // create 2 firstfolder/secondfolder blobs for i in 0..2u8 { - container + container_client .as_blob_client(format!("firstfolder/secondfolder/blob{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -98,7 +98,7 @@ async fn main() -> Result<(), Box> { // create 4 firstfolder/thirdfolder blobs for i in 0..4u8 { - container + container_client .as_blob_client(format!("firstfolder/thirdfolder/blob{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -108,7 +108,7 @@ async fn main() -> Result<(), Box> { // create 4 firstfolder/fourthfolder blobs for i in 0..5u8 { - container + container_client .as_blob_client(format!( "firstfolder/thirdfolder/fourthfolder/blob{}.txt", i @@ -119,7 +119,7 @@ async fn main() -> Result<(), Box> { .await?; } - let iv = container + let iv = container_client .list_blobs() .max_results(NonZeroU32::new(100u32).unwrap()) .delimiter("/") @@ -134,7 +134,7 @@ async fn main() -> Result<(), Box> { iv.blobs.blobs.iter().for_each(|b| println!("\t{}", b.name)); assert_eq!(iv.blobs.blobs.len(), 4); - let iv = container + let iv = container_client .list_blobs() .max_results(NonZeroU32::new(100u32).unwrap()) .prefix("firstfolder/") @@ -151,7 +151,7 @@ async fn main() -> Result<(), Box> { assert_eq!(iv.blobs.blobs.len(), 3); let mut stream = Box::pin( - container + container_client .list_blobs() .max_results(NonZeroU32::new(5u32).unwrap()) .stream(), @@ -171,7 +171,7 @@ async fn main() -> Result<(), Box> { cnt += 1; } - container.delete().execute().await?; + container_client.delete().execute().await?; println!("Container {} deleted", container_name); Ok(()) diff --git a/sdk/storage_blobs/examples/list_blobs_02.rs b/sdk/storage_blobs/examples/list_blobs_02.rs index 6f7604a171..76db1e0367 100644 --- a/sdk/storage_blobs/examples/list_blobs_02.rs +++ b/sdk/storage_blobs/examples/list_blobs_02.rs @@ -15,14 +15,14 @@ async fn main() -> Result<(), Box> { .expect("please specify a non-existing container name as command line parameter"); let http_client = azure_core::new_http_client(); - let storage_account = + let storage_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) .as_storage_client(); - create_container_and_list(storage_account, &container_name).await?; + create_container_and_list(storage_client, &container_name).await?; - let storage_account = StorageAccountClient::new_emulator_default().as_storage_client(); - create_container_and_list(storage_account, &container_name).await?; + let storage_client = StorageAccountClient::new_emulator_default().as_storage_client(); + create_container_and_list(storage_client, &container_name).await?; Ok(()) } diff --git a/sdk/storage_blobs/examples/list_containers2.rs b/sdk/storage_blobs/examples/list_containers2.rs index 8861792ba8..8d6769a90c 100644 --- a/sdk/storage_blobs/examples/list_containers2.rs +++ b/sdk/storage_blobs/examples/list_containers2.rs @@ -22,27 +22,27 @@ async fn main() -> Result<(), Box> { let storage_account = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage = storage_account.as_storage_client(); - let blob_service = storage.as_blob_service_client(); + let storage_client = storage_account.as_storage_client(); + let blob_service_client = storage_client.as_blob_service_client(); - let response = storage + let response = storage_client .as_container_client("azuresdkforrust") .list_blobs() .execute() .await?; println!("key response = {:#?}", response); - let response = blob_service.list_containers().execute().await?; + let response = blob_service_client.list_containers().execute().await?; println!("key response = {:#?}", response); // let's test a SAS token // the code is identical // once instantiated let sas_token = "?sv=2019-12-12&ss=bfqt&srt=sco&sp=rwdlacupx&se=2020-12-05T20:20:58Z&st=2020-12-05T12:20:58Z&spr=https&sig=vxUuKjQW4%2FmB884f%2BdqCp4h3O%2BYuYgIJN8RVGHFVFpY%3D"; - let storage = StorageAccountClient::new_sas_token(http_client.clone(), &account, sas_token)? - .as_storage_client(); - let blob_service = storage.as_blob_service_client(); - let response = blob_service.list_containers().execute().await?; + let blob_service_client = + StorageAccountClient::new_sas_token(http_client.clone(), &account, sas_token)? + .as_blob_service_client(); + let response = blob_service_client.list_containers().execute().await?; println!("sas response = {:#?}", response); Ok(()) diff --git a/sdk/storage_blobs/examples/put_append_blob_00.rs b/sdk/storage_blobs/examples/put_append_blob_00.rs index f97804c9dd..39b97b5d55 100644 --- a/sdk/storage_blobs/examples/put_append_blob_00.rs +++ b/sdk/storage_blobs/examples/put_append_blob_00.rs @@ -25,12 +25,10 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); - let storage_account_client = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container) - .as_blob_client(&blob_name); + let blob_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_container_client(&container) + .as_blob_client(&blob_name); //let data = b"something"; @@ -48,7 +46,7 @@ async fn main() -> Result<(), Box> { // parameters (such as LeaseID, or ContentDisposition, etc...) // so make sure to check with the documentation. trace!("before put_append_blob"); - let res = blob + let res = blob_client .put_append_blob() .content_type("text/plain") .content_language("en/us") @@ -59,7 +57,7 @@ async fn main() -> Result<(), Box> { println!("{:?}", res); // let get back the metadata - let res = blob.get_metadata().execute().await?; + let res = blob_client.get_metadata().execute().await?; println!("{:?}", res); Ok(()) diff --git a/sdk/storage_blobs/examples/put_block_blob_00.rs b/sdk/storage_blobs/examples/put_block_blob_00.rs index 7b824f8bbc..30d7c115c4 100644 --- a/sdk/storage_blobs/examples/put_block_blob_00.rs +++ b/sdk/storage_blobs/examples/put_block_blob_00.rs @@ -26,12 +26,10 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); - let storage_account_client = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container) - .as_blob_client(&blob_name); + let blob_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_container_client(&container) + .as_blob_client(&blob_name); let data = Bytes::from_static(b"something"); @@ -43,7 +41,7 @@ async fn main() -> Result<(), Box> { // The builder supports many more optional // parameters (such as LeaseID, or ContentDisposition, MD5 etc...) // so make sure to check with the documentation. - let res = blob + let res = blob_client .put_block_blob(data.clone()) .content_type("text/plain") .hash(&hash) @@ -59,13 +57,16 @@ async fn main() -> Result<(), Box> { .blocks .push(BlobBlockType::new_uncommitted("pollastro")); - let res = blob.put_block("satanasso", data.clone()).execute().await?; + let res = blob_client + .put_block("satanasso", data.clone()) + .execute() + .await?; println!("2-put_block {:?}", res); - let res = blob.put_block("pollastro", data).execute().await?; + let res = blob_client.put_block("pollastro", data).execute().await?; println!("3-put_block {:?}", res); - let ret = blob + let ret = blob_client .get_block_list() .block_list_type(BlockListType::All) .execute() @@ -76,21 +77,21 @@ async fn main() -> Result<(), Box> { let bl = ret.block_with_size_list.into(); println!("bl == {:?}", bl); - let res = blob.put_block_list(&bl).execute().await?; + let res = blob_client.put_block_list(&bl).execute().await?; println!("PutBlockList == {:?}", res); - let res = blob + let res = blob_client .acquire_lease(Duration::from_secs(60)) .execute() .await?; println!("Acquire lease == {:?}", res); - let lease = blob.as_blob_lease_client(res.lease_id); + let lease = blob_client.as_blob_lease_client(res.lease_id); let res = lease.renew().execute().await?; println!("Renew lease == {:?}", res); - let res = blob + let res = blob_client .break_lease() .lease_break_period(Duration::from_secs(15)) .execute() @@ -100,7 +101,7 @@ async fn main() -> Result<(), Box> { let res = lease.release().execute().await?; println!("Release lease == {:?}", res); - let res = blob + let res = blob_client .delete() .delete_snapshots_method(DeleteSnapshotsMethod::Include) .execute() diff --git a/sdk/storage_blobs/examples/put_page_blob_00.rs b/sdk/storage_blobs/examples/put_page_blob_00.rs index 9f9478cb7c..f18561221f 100644 --- a/sdk/storage_blobs/examples/put_page_blob_00.rs +++ b/sdk/storage_blobs/examples/put_page_blob_00.rs @@ -26,11 +26,10 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); - let container = + let blob_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) - .as_storage_client() - .as_container_client(&container_name); - let blob = container.as_blob_client(&blob_name); + .as_container_client(&container_name) + .as_blob_client(&blob_name); let data = Bytes::from_static(&[51; 2000]); @@ -48,7 +47,7 @@ async fn main() -> Result<(), Box> { // The builder supports many more optional // parameters (such as LeaseID, or ContentDisposition, etc...) // so make sure to check with the documentation. - let res = blob + let res = blob_client .put_page_blob(1024 * 3) .content_type("text/plain") .metadata(&metadata) @@ -60,7 +59,7 @@ async fn main() -> Result<(), Box> { // this will update a page. The slice must be at least // the size of tha page or a buffer out // of bounds error will be thrown. - let res = blob + let res = blob_client .update_page(BA512Range::new(0, 511)?, slice.clone()) .hash(&digest.into()) .execute() @@ -68,7 +67,7 @@ async fn main() -> Result<(), Box> { println!("update first page == {:?}", res); // update a second page with the same data - let res = blob + let res = blob_client .update_page(BA512Range::new(512, 1023)?, slice.clone()) .hash(&digest.into()) .execute() @@ -76,7 +75,7 @@ async fn main() -> Result<(), Box> { println!("update second page == {:?}", res); // update the second page again with checks - let res = blob + let res = blob_client .update_page(BA512Range::new(512, 1023)?, slice) .hash(&digest.into()) .sequence_number_condition(SequenceNumberCondition::Equal(100)) @@ -85,7 +84,10 @@ async fn main() -> Result<(), Box> { println!("update sequence number condition == {:?}", res); // let's clear a page - let res = blob.clear_page(BA512Range::new(0, 511)?).execute().await?; + let res = blob_client + .clear_page(BA512Range::new(0, 511)?) + .execute() + .await?; println!("clear first page {:?}", res); Ok(()) diff --git a/sdk/storage_blobs/examples/shared_access_signature.rs b/sdk/storage_blobs/examples/shared_access_signature.rs index 43c02def2a..128fe137a3 100644 --- a/sdk/storage_blobs/examples/shared_access_signature.rs +++ b/sdk/storage_blobs/examples/shared_access_signature.rs @@ -31,9 +31,7 @@ fn code() -> Result<(), Box> { let storage_account_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let container_client = storage_account_client - .as_storage_client() - .as_container_client(&container_name); + let container_client = storage_account_client.as_container_client(&container_name); let blob_client = container_client.as_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 71d0596432..2bda4d1f67 100644 --- a/sdk/storage_blobs/examples/stream_blob_00.rs +++ b/sdk/storage_blobs/examples/stream_blob_00.rs @@ -26,16 +26,14 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); - let storage_account_client = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container_name) - .as_blob_client(file_name); + let blob_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_container_client(&container_name) + .as_blob_client(file_name); let string = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"; - let _response = blob + let _response = blob_client .put_block_blob(string) .content_type("text/plain") .execute() @@ -49,7 +47,7 @@ async fn main() -> Result<(), Box> { // http overhead will be less but it also means you will have to wait for more // time before receiving anything. In this example we use a very small chunk size // just to make sure to loop at least twice. - let mut stream = Box::pin(blob.get().stream(128)); + let mut stream = Box::pin(blob_client.get().stream(128)); let result = Rc::new(RefCell::new(Vec::new())); @@ -90,7 +88,8 @@ async fn main() -> Result<(), Box> { returned_string ); - blob.delete() + blob_client + .delete() .delete_snapshots_method(DeleteSnapshotsMethod::Include) .execute() .await?; diff --git a/sdk/storage_blobs/examples/stream_blob_01.rs b/sdk/storage_blobs/examples/stream_blob_01.rs index 64952ce3c0..535693023f 100644 --- a/sdk/storage_blobs/examples/stream_blob_01.rs +++ b/sdk/storage_blobs/examples/stream_blob_01.rs @@ -25,14 +25,12 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); - let storage_account_client = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let storage_client = storage_account_client.as_storage_client(); - let blob = storage_client - .as_container_client(&container_name) - .as_blob_client(file_name); + let blob_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_container_client(&container_name) + .as_blob_client(file_name); - let mut stream = Box::pin(get_blob_stream(&blob)); + let mut stream = Box::pin(get_blob_stream(&blob_client)); while let Some(res) = stream.next().await { println!("{:?}", res.unwrap()); @@ -42,9 +40,9 @@ async fn main() -> Result<(), Box> { } fn get_blob_stream<'a>( - blob: &'a BlobClient, + blob_client: &'a BlobClient, ) -> impl futures::Stream>> + 'a { - let stream = blob.get().stream(1024); + let stream = blob_client.get().stream(1024); stream } From df19de8d4c64747cea7383e6fcc270061bf2a1fe Mon Sep 17 00:00:00 2001 From: John Batty Date: Sun, 19 Dec 2021 21:06:43 +0000 Subject: [PATCH 13/13] Minor example cleanups --- sdk/storage_blobs/examples/list_blobs_02.rs | 14 +++++++------- sdk/storage_blobs/examples/list_containers2.rs | 7 +++---- .../examples/shared_access_signature.rs | 2 -- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/sdk/storage_blobs/examples/list_blobs_02.rs b/sdk/storage_blobs/examples/list_blobs_02.rs index 76db1e0367..f4c15d95c6 100644 --- a/sdk/storage_blobs/examples/list_blobs_02.rs +++ b/sdk/storage_blobs/examples/list_blobs_02.rs @@ -28,19 +28,19 @@ async fn main() -> Result<(), Box> { } async fn create_container_and_list( - storage: std::sync::Arc, + storage_client: std::sync::Arc, container_name: &str, ) -> Result<(), Box> { - let container = storage.as_container_client(container_name); + let container_client = storage_client.as_container_client(container_name); - container.create().execute().await?; + container_client.create().execute().await?; // list empty container - let iv = container.list_blobs().execute().await?; + let iv = container_client.list_blobs().execute().await?; println!("List blob returned {} blobs.", iv.blobs.blobs.len()); for i in 0..3 { - container + container_client .as_blob_client(format!("blob{}.txt", i)) .put_block_blob("somedata") .content_type("text/plain") @@ -50,10 +50,10 @@ async fn create_container_and_list( } // list full container - let iv = container.list_blobs().execute().await?; + let iv = container_client.list_blobs().execute().await?; println!("List blob returned {} blobs.", iv.blobs.blobs.len()); - container.delete().execute().await?; + container_client.delete().execute().await?; println!("Container {} deleted", container_name); Ok(()) diff --git a/sdk/storage_blobs/examples/list_containers2.rs b/sdk/storage_blobs/examples/list_containers2.rs index 8d6769a90c..28e9845f46 100644 --- a/sdk/storage_blobs/examples/list_containers2.rs +++ b/sdk/storage_blobs/examples/list_containers2.rs @@ -19,10 +19,9 @@ async fn main() -> Result<(), Box> { let http_client = azure_core::new_http_client(); - let storage_account = - StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - - let storage_client = storage_account.as_storage_client(); + let storage_client = + StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key) + .as_storage_client(); let blob_service_client = storage_client.as_blob_service_client(); let response = storage_client diff --git a/sdk/storage_blobs/examples/shared_access_signature.rs b/sdk/storage_blobs/examples/shared_access_signature.rs index 128fe137a3..86e7e694c2 100644 --- a/sdk/storage_blobs/examples/shared_access_signature.rs +++ b/sdk/storage_blobs/examples/shared_access_signature.rs @@ -30,9 +30,7 @@ fn code() -> Result<(), Box> { let storage_account_client = StorageAccountClient::new_access_key(http_client.clone(), &account, &master_key); - let container_client = storage_account_client.as_container_client(&container_name); - let blob_client = container_client.as_blob_client(&blob_name); let sas = storage_account_client