BlobContainerClient
The BlobContainerClient allows you to manipulate Azure
Storage containers and their blobs.
using Azure.Core;
using Azure.Core.Pipeline;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
using Azure.Storage.Common;
using Azure.Storage.Cryptography;
using Azure.Storage.Sas;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace Azure.Storage.Blobs
{
public class BlobContainerClient
{
public static readonly string RootBlobContainerName = "$root";
public static readonly string LogsBlobContainerName = "$logs";
public static readonly string WebBlobContainerName = "$web";
private readonly Uri _uri;
private readonly BlobClientConfiguration _clientConfiguration;
private readonly HttpPipelinePolicy _authenticationPolicy;
private readonly ClientSideEncryptionOptions _clientSideEncryption;
private string _accountName;
private string _name;
private readonly ContainerRestClient _containerRestClient;
private BlobServiceClient _parentBlobServiceClient;
public virtual Uri Uri => _uri;
internal virtual BlobClientConfiguration ClientConfiguration => _clientConfiguration;
internal virtual HttpPipelinePolicy AuthenticationPolicy => _authenticationPolicy;
internal virtual ClientSideEncryptionOptions ClientSideEncryption => _clientSideEncryption;
public virtual string AccountName {
get {
SetNameFieldsIfNull();
return _accountName;
}
}
public virtual string Name {
get {
SetNameFieldsIfNull();
return _name;
}
}
public virtual bool CanGenerateSasUri => (object)ClientConfiguration.SharedKeyCredential != null;
internal virtual ContainerRestClient ContainerRestClient => _containerRestClient;
protected BlobContainerClient()
{
}
public BlobContainerClient(string connectionString, string blobContainerName)
: this(connectionString, blobContainerName, null)
{
}
public BlobContainerClient(string connectionString, string blobContainerName, BlobClientOptions options)
{
Argument.AssertNotNullOrWhiteSpace(blobContainerName, "blobContainerName");
StorageConnectionString storageConnectionString = StorageConnectionString.Parse(connectionString);
BlobUriBuilder blobUriBuilder = new BlobUriBuilder(storageConnectionString.BlobEndpoint, options?.TrimBlobNameSlashes ?? true) {
BlobContainerName = blobContainerName
};
_uri = blobUriBuilder.ToUri();
if (options == null)
options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05);
_clientConfiguration = new BlobClientConfiguration(options.Build(storageConnectionString.Credentials), storageConnectionString.Credentials as StorageSharedKeyCredential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes);
_authenticationPolicy = StorageClientOptions.GetAuthenticationPolicy(storageConnectionString.Credentials, null, null);
ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
_clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
_containerRestClient = BuildContainerRestClient(_uri);
BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
}
public BlobContainerClient(Uri blobContainerUri, BlobClientOptions options = null)
{
Argument.AssertNotNull(blobContainerUri, "blobContainerUri");
_uri = blobContainerUri;
_authenticationPolicy = null;
if (options == null)
options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05);
_clientConfiguration = new BlobClientConfiguration(options.Build(null), null, null, null, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes);
ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
_clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
_containerRestClient = BuildContainerRestClient(blobContainerUri);
BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
}
public BlobContainerClient(Uri blobContainerUri, StorageSharedKeyCredential credential, BlobClientOptions options = null)
{
Argument.AssertNotNull(blobContainerUri, "blobContainerUri");
HttpPipelinePolicy val = credential.AsPolicy();
_uri = blobContainerUri;
_authenticationPolicy = val;
if (options == null)
options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05);
_clientConfiguration = new BlobClientConfiguration(options.Build(val), credential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes);
ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
_clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
_containerRestClient = BuildContainerRestClient(blobContainerUri);
BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
}
public BlobContainerClient(Uri blobContainerUri, AzureSasCredential credential, BlobClientOptions options = null)
{
Argument.AssertNotNull(blobContainerUri, "blobContainerUri");
_uri = blobContainerUri;
_authenticationPolicy = credential.AsPolicy<BlobUriBuilder>(blobContainerUri);
if (options == null)
options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05);
_clientConfiguration = new BlobClientConfiguration(options.Build(_authenticationPolicy), credential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes);
ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
_clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
_containerRestClient = BuildContainerRestClient(blobContainerUri);
BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
}
public BlobContainerClient(Uri blobContainerUri, TokenCredential credential, BlobClientOptions options = null)
{
Errors.VerifyHttpsTokenAuth(blobContainerUri);
Argument.AssertNotNull(blobContainerUri, "blobContainerUri");
_uri = blobContainerUri;
object value;
BlobAudience? audience;
BlobAudience blobAudience;
if (options == null)
value = null;
else {
audience = options.Audience;
if (!audience.HasValue)
value = null;
else {
blobAudience = audience.GetValueOrDefault();
value = blobAudience.ToString();
}
}
object text;
if (!string.IsNullOrEmpty((string)value)) {
audience = options.Audience;
blobAudience = audience.Value;
text = blobAudience.CreateDefaultScope();
} else {
blobAudience = BlobAudience.DefaultAudience;
text = blobAudience.CreateDefaultScope();
}
string scope = (string)text;
_authenticationPolicy = credential.AsPolicy(scope, options);
if (options == null)
options = new BlobClientOptions(BlobClientOptions.ServiceVersion.V2025_05_05);
_clientConfiguration = new BlobClientConfiguration(options.Build(_authenticationPolicy), credential, new ClientDiagnostics(options, null), options.Version, options.CustomerProvidedKey, options.TransferValidation, options.EncryptionScope, options.TrimBlobNameSlashes);
ClientSideEncryptionOptions clientSideEncryptionOptions = options._clientSideEncryptionOptions;
_clientSideEncryption = ((clientSideEncryptionOptions != null) ? clientSideEncryptionOptions.Clone() : null);
_containerRestClient = BuildContainerRestClient(blobContainerUri);
BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
}
internal BlobContainerClient(Uri containerUri, BlobClientConfiguration clientConfiguration, ClientSideEncryptionOptions clientSideEncryption)
{
_uri = containerUri;
_clientConfiguration = clientConfiguration;
_authenticationPolicy = StorageClientOptions.GetAuthenticationPolicy((object)_clientConfiguration.SharedKeyCredential, null, null);
_clientSideEncryption = ((clientSideEncryption != null) ? clientSideEncryption.Clone() : null);
_containerRestClient = BuildContainerRestClient(containerUri);
BlobErrors.VerifyHttpsCustomerProvidedKey(_uri, _clientConfiguration.CustomerProvidedKey);
BlobErrors.VerifyCpkAndEncryptionScopeNotBothSet(_clientConfiguration.CustomerProvidedKey, _clientConfiguration.EncryptionScope);
}
protected static BlobContainerClient CreateClient(Uri containerUri, BlobClientOptions options, HttpPipeline pipeline)
{
return new BlobContainerClient(containerUri, new BlobClientConfiguration(pipeline, null, new ClientDiagnostics(options, null), options.Version, (CustomerProvidedKey?)null, options.TransferValidation, (string)null, options.TrimBlobNameSlashes), null);
}
private ContainerRestClient BuildContainerRestClient(Uri containerUri)
{
return new ContainerRestClient(_clientConfiguration.ClientDiagnostics, _clientConfiguration.Pipeline, containerUri.AbsoluteUri, _clientConfiguration.Version.ToVersionString());
}
protected internal virtual BlobBaseClient GetBlobBaseClientCore(string blobName)
{
Argument.AssertNotNullOrEmpty(blobName, "blobName");
return new BlobBaseClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
BlobName = blobName
}.ToUri(), ClientConfiguration, ClientSideEncryption);
}
public virtual BlobClient GetBlobClient(string blobName)
{
Argument.AssertNotNullOrEmpty(blobName, "blobName");
return new BlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
BlobName = blobName
}.ToUri(), ClientConfiguration, ClientSideEncryption);
}
protected internal virtual BlockBlobClient GetBlockBlobClientCore(string blobName)
{
Argument.AssertNotNullOrEmpty(blobName, "blobName");
if ((object)ClientSideEncryption != null)
throw Errors.ClientSideEncryption.TypeNotSupported(typeof(BlockBlobClient));
return new BlockBlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
BlobName = blobName
}.ToUri(), ClientConfiguration);
}
protected internal virtual AppendBlobClient GetAppendBlobClientCore(string blobName)
{
Argument.AssertNotNullOrEmpty(blobName, "blobName");
if ((object)ClientSideEncryption != null)
throw Errors.ClientSideEncryption.TypeNotSupported(typeof(AppendBlobClient));
return new AppendBlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
BlobName = blobName
}.ToUri(), ClientConfiguration);
}
protected internal virtual PageBlobClient GetPageBlobClientCore(string blobName)
{
Argument.AssertNotNullOrEmpty(blobName, "blobName");
if ((object)ClientSideEncryption != null)
throw Errors.ClientSideEncryption.TypeNotSupported(typeof(PageBlobClient));
return new PageBlobClient(new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
BlobName = blobName
}.ToUri(), ClientConfiguration);
}
protected internal virtual BlobLeaseClient GetBlobLeaseClientCore(string leaseId)
{
return new BlobLeaseClient(this, leaseId);
}
private void SetNameFieldsIfNull()
{
if (_name == null || _accountName == null) {
BlobUriBuilder blobUriBuilder = new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes);
_name = blobUriBuilder.BlobContainerName;
_accountName = blobUriBuilder.AccountName;
}
}
public virtual Response<BlobContainerInfo> Create(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return CreateInternal(publicAccessType, metadata, encryptionScopeOptions, false, cancellationToken, null).EnsureCompleted();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual Response<BlobContainerInfo> Create(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken)
{
return CreateInternal(publicAccessType, metadata, null, false, cancellationToken, null).EnsureCompleted();
}
[AsyncStateMachine(typeof(<CreateAsync>d__45))]
public virtual Task<Response<BlobContainerInfo>> CreateAsync(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<CreateAsync>d__45 stateMachine = default(<CreateAsync>d__45);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.publicAccessType = publicAccessType;
stateMachine.metadata = metadata;
stateMachine.encryptionScopeOptions = encryptionScopeOptions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<CreateAsync>d__46))]
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual Task<Response<BlobContainerInfo>> CreateAsync(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken)
{
<CreateAsync>d__46 stateMachine = default(<CreateAsync>d__46);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.publicAccessType = publicAccessType;
stateMachine.metadata = metadata;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response<BlobContainerInfo> CreateIfNotExists(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return CreateIfNotExistsInternal(publicAccessType, metadata, encryptionScopeOptions, false, cancellationToken).EnsureCompleted();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual Response<BlobContainerInfo> CreateIfNotExists(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken)
{
return CreateIfNotExistsInternal(publicAccessType, metadata, null, false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<CreateIfNotExistsAsync>d__49))]
public virtual Task<Response<BlobContainerInfo>> CreateIfNotExistsAsync(PublicAccessType publicAccessType = PublicAccessType.None, IDictionary<string, string> metadata = null, BlobContainerEncryptionScopeOptions encryptionScopeOptions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<CreateIfNotExistsAsync>d__49 stateMachine = default(<CreateIfNotExistsAsync>d__49);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.publicAccessType = publicAccessType;
stateMachine.metadata = metadata;
stateMachine.encryptionScopeOptions = encryptionScopeOptions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<CreateIfNotExistsAsync>d__50))]
[EditorBrowsable(EditorBrowsableState.Never)]
public virtual Task<Response<BlobContainerInfo>> CreateIfNotExistsAsync(PublicAccessType publicAccessType, IDictionary<string, string> metadata, CancellationToken cancellationToken)
{
<CreateIfNotExistsAsync>d__50 stateMachine = default(<CreateIfNotExistsAsync>d__50);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.publicAccessType = publicAccessType;
stateMachine.metadata = metadata;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<CreateIfNotExistsInternal>d__51))]
private Task<Response<BlobContainerInfo>> CreateIfNotExistsInternal(PublicAccessType publicAccessType, IDictionary<string, string> metadata, BlobContainerEncryptionScopeOptions encryptionScopeOptions, bool async, CancellationToken cancellationToken)
{
<CreateIfNotExistsInternal>d__51 stateMachine = default(<CreateIfNotExistsInternal>d__51);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.publicAccessType = publicAccessType;
stateMachine.metadata = metadata;
stateMachine.encryptionScopeOptions = encryptionScopeOptions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<CreateInternal>d__52))]
private Task<Response<BlobContainerInfo>> CreateInternal(PublicAccessType publicAccessType, IDictionary<string, string> metadata, BlobContainerEncryptionScopeOptions encryptionScopeOptions, bool async, CancellationToken cancellationToken, string operationName = null)
{
<CreateInternal>d__52 stateMachine = default(<CreateInternal>d__52);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.publicAccessType = publicAccessType;
stateMachine.metadata = metadata;
stateMachine.encryptionScopeOptions = encryptionScopeOptions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response Delete(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return DeleteInternal(conditions, false, cancellationToken, null).EnsureCompleted();
}
[AsyncStateMachine(typeof(<DeleteAsync>d__54))]
public virtual Task<Response> DeleteAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<DeleteAsync>d__54 stateMachine = default(<DeleteAsync>d__54);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response<bool> DeleteIfExists(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return DeleteIfExistsInternal(conditions, false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<DeleteIfExistsAsync>d__56))]
public virtual Task<Response<bool>> DeleteIfExistsAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<DeleteIfExistsAsync>d__56 stateMachine = default(<DeleteIfExistsAsync>d__56);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<DeleteIfExistsInternal>d__57))]
private Task<Response<bool>> DeleteIfExistsInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken)
{
<DeleteIfExistsInternal>d__57 stateMachine = default(<DeleteIfExistsInternal>d__57);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<DeleteInternal>d__58))]
private Task<Response> DeleteInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken, string operationName = null)
{
<DeleteInternal>d__58 stateMachine = default(<DeleteInternal>d__58);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response<bool> Exists(CancellationToken cancellationToken = default(CancellationToken))
{
return ExistsInternal(false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<ExistsAsync>d__60))]
public virtual Task<Response<bool>> ExistsAsync(CancellationToken cancellationToken = default(CancellationToken))
{
<ExistsAsync>d__60 stateMachine = default(<ExistsAsync>d__60);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create();
stateMachine.<>4__this = this;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<ExistsInternal>d__61))]
private Task<Response<bool>> ExistsInternal(bool async, CancellationToken cancellationToken)
{
<ExistsInternal>d__61 stateMachine = default(<ExistsInternal>d__61);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create();
stateMachine.<>4__this = this;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response<BlobContainerProperties> GetProperties(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return GetPropertiesInternal(conditions, false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<GetPropertiesAsync>d__63))]
public virtual Task<Response<BlobContainerProperties>> GetPropertiesAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<GetPropertiesAsync>d__63 stateMachine = default(<GetPropertiesAsync>d__63);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerProperties>>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<GetPropertiesInternal>d__64))]
private Task<Response<BlobContainerProperties>> GetPropertiesInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken)
{
<GetPropertiesInternal>d__64 stateMachine = default(<GetPropertiesInternal>d__64);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerProperties>>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response<BlobContainerInfo> SetMetadata(IDictionary<string, string> metadata, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return SetMetadataInternal(metadata, conditions, false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<SetMetadataAsync>d__66))]
public virtual Task<Response<BlobContainerInfo>> SetMetadataAsync(IDictionary<string, string> metadata, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<SetMetadataAsync>d__66 stateMachine = default(<SetMetadataAsync>d__66);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.metadata = metadata;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<SetMetadataInternal>d__67))]
private Task<Response<BlobContainerInfo>> SetMetadataInternal(IDictionary<string, string> metadata, BlobRequestConditions conditions, bool async, CancellationToken cancellationToken)
{
<SetMetadataInternal>d__67 stateMachine = default(<SetMetadataInternal>d__67);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.metadata = metadata;
stateMachine.conditions = conditions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response<BlobContainerAccessPolicy> GetAccessPolicy(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return GetAccessPolicyInternal(conditions, false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<GetAccessPolicyAsync>d__69))]
public virtual Task<Response<BlobContainerAccessPolicy>> GetAccessPolicyAsync(BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<GetAccessPolicyAsync>d__69 stateMachine = default(<GetAccessPolicyAsync>d__69);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerAccessPolicy>>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<GetAccessPolicyInternal>d__70))]
private Task<Response<BlobContainerAccessPolicy>> GetAccessPolicyInternal(BlobRequestConditions conditions, bool async, CancellationToken cancellationToken)
{
<GetAccessPolicyInternal>d__70 stateMachine = default(<GetAccessPolicyInternal>d__70);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerAccessPolicy>>.Create();
stateMachine.<>4__this = this;
stateMachine.conditions = conditions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Response<BlobContainerInfo> SetAccessPolicy(PublicAccessType accessType = PublicAccessType.None, IEnumerable<BlobSignedIdentifier> permissions = null, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return SetAccessPolicyInternal(accessType, permissions, conditions, false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<SetAccessPolicyAsync>d__72))]
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Task<Response<BlobContainerInfo>> SetAccessPolicyAsync(PublicAccessType accessType = PublicAccessType.None, IEnumerable<BlobSignedIdentifier> permissions = null, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<SetAccessPolicyAsync>d__72 stateMachine = default(<SetAccessPolicyAsync>d__72);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.accessType = accessType;
stateMachine.permissions = permissions;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<SetAccessPolicyInternal>d__73))]
private Task<Response<BlobContainerInfo>> SetAccessPolicyInternal(PublicAccessType accessType, IEnumerable<BlobSignedIdentifier> permissions, BlobRequestConditions conditions, bool async, CancellationToken cancellationToken)
{
<SetAccessPolicyInternal>d__73 stateMachine = default(<SetAccessPolicyInternal>d__73);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.accessType = accessType;
stateMachine.permissions = permissions;
stateMachine.conditions = conditions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Pageable<BlobItem> GetBlobs(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string prefix = null, CancellationToken cancellationToken = default(CancellationToken))
{
return new GetBlobsAsyncCollection(this, traits, states, prefix).ToSyncCollection(cancellationToken);
}
public virtual AsyncPageable<BlobItem> GetBlobsAsync(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string prefix = null, CancellationToken cancellationToken = default(CancellationToken))
{
return new GetBlobsAsyncCollection(this, traits, states, prefix).ToAsyncCollection(cancellationToken);
}
[AsyncStateMachine(typeof(<GetBlobsInternal>d__76))]
internal Task<Response<ListBlobsFlatSegmentResponse>> GetBlobsInternal(string marker, BlobTraits traits, BlobStates states, string prefix, int? pageSizeHint, bool async, CancellationToken cancellationToken)
{
<GetBlobsInternal>d__76 stateMachine = default(<GetBlobsInternal>d__76);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<ListBlobsFlatSegmentResponse>>.Create();
stateMachine.<>4__this = this;
stateMachine.marker = marker;
stateMachine.traits = traits;
stateMachine.states = states;
stateMachine.prefix = prefix;
stateMachine.pageSizeHint = pageSizeHint;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Pageable<BlobHierarchyItem> GetBlobsByHierarchy(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string delimiter = null, string prefix = null, CancellationToken cancellationToken = default(CancellationToken))
{
return new GetBlobsByHierarchyAsyncCollection(this, delimiter, traits, states, prefix).ToSyncCollection(cancellationToken);
}
public virtual AsyncPageable<BlobHierarchyItem> GetBlobsByHierarchyAsync(BlobTraits traits = BlobTraits.None, BlobStates states = BlobStates.None, string delimiter = null, string prefix = null, CancellationToken cancellationToken = default(CancellationToken))
{
return new GetBlobsByHierarchyAsyncCollection(this, delimiter, traits, states, prefix).ToAsyncCollection(cancellationToken);
}
[AsyncStateMachine(typeof(<GetBlobsByHierarchyInternal>d__79))]
internal Task<Response<ListBlobsHierarchySegmentResponse>> GetBlobsByHierarchyInternal(string marker, string delimiter, BlobTraits traits, BlobStates states, string prefix, int? pageSizeHint, bool async, CancellationToken cancellationToken)
{
<GetBlobsByHierarchyInternal>d__79 stateMachine = default(<GetBlobsByHierarchyInternal>d__79);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<ListBlobsHierarchySegmentResponse>>.Create();
stateMachine.<>4__this = this;
stateMachine.marker = marker;
stateMachine.delimiter = delimiter;
stateMachine.traits = traits;
stateMachine.states = states;
stateMachine.prefix = prefix;
stateMachine.pageSizeHint = pageSizeHint;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[ForwardsClientCalls]
public virtual Response<BlobContentInfo> UploadBlob(string blobName, Stream content, CancellationToken cancellationToken = default(CancellationToken))
{
return GetBlobClient(blobName).Upload(content, cancellationToken);
}
[AsyncStateMachine(typeof(<UploadBlobAsync>d__81))]
[ForwardsClientCalls]
public virtual Task<Response<BlobContentInfo>> UploadBlobAsync(string blobName, Stream content, CancellationToken cancellationToken = default(CancellationToken))
{
<UploadBlobAsync>d__81 stateMachine = default(<UploadBlobAsync>d__81);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.blobName = blobName;
stateMachine.content = content;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[ForwardsClientCalls]
public virtual Response<BlobContentInfo> UploadBlob(string blobName, BinaryData content, CancellationToken cancellationToken = default(CancellationToken))
{
return GetBlobClient(blobName).Upload(content, cancellationToken);
}
[AsyncStateMachine(typeof(<UploadBlobAsync>d__83))]
[ForwardsClientCalls]
public virtual Task<Response<BlobContentInfo>> UploadBlobAsync(string blobName, BinaryData content, CancellationToken cancellationToken = default(CancellationToken))
{
<UploadBlobAsync>d__83 stateMachine = default(<UploadBlobAsync>d__83);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContentInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.blobName = blobName;
stateMachine.content = content;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[ForwardsClientCalls]
public virtual Response DeleteBlob(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return GetBlobClient(blobName).Delete(snapshotsOption, conditions, cancellationToken);
}
[AsyncStateMachine(typeof(<DeleteBlobAsync>d__85))]
[ForwardsClientCalls]
public virtual Task<Response> DeleteBlobAsync(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<DeleteBlobAsync>d__85 stateMachine = default(<DeleteBlobAsync>d__85);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response>.Create();
stateMachine.<>4__this = this;
stateMachine.blobName = blobName;
stateMachine.snapshotsOption = snapshotsOption;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[ForwardsClientCalls]
public virtual Response<bool> DeleteBlobIfExists(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return GetBlobClient(blobName).DeleteIfExists(snapshotsOption, conditions ?? null, cancellationToken);
}
[AsyncStateMachine(typeof(<DeleteBlobIfExistsAsync>d__87))]
[ForwardsClientCalls]
public virtual Task<Response<bool>> DeleteBlobIfExistsAsync(string blobName, DeleteSnapshotsOption snapshotsOption = DeleteSnapshotsOption.None, BlobRequestConditions conditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<DeleteBlobIfExistsAsync>d__87 stateMachine = default(<DeleteBlobIfExistsAsync>d__87);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<bool>>.Create();
stateMachine.<>4__this = this;
stateMachine.blobName = blobName;
stateMachine.snapshotsOption = snapshotsOption;
stateMachine.conditions = conditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
internal virtual Response<BlobContainerClient> Rename(string destinationContainerName, BlobRequestConditions sourceConditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
return RenameInternal(destinationContainerName, sourceConditions, false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<RenameAsync>d__89))]
internal virtual Task<Response<BlobContainerClient>> RenameAsync(string destinationContainerName, BlobRequestConditions sourceConditions = null, CancellationToken cancellationToken = default(CancellationToken))
{
<RenameAsync>d__89 stateMachine = default(<RenameAsync>d__89);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
stateMachine.<>4__this = this;
stateMachine.destinationContainerName = destinationContainerName;
stateMachine.sourceConditions = sourceConditions;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<RenameInternal>d__90))]
internal Task<Response<BlobContainerClient>> RenameInternal(string destinationContainerName, BlobRequestConditions sourceConditions, bool async, CancellationToken cancellationToken)
{
<RenameInternal>d__90 stateMachine = default(<RenameInternal>d__90);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<BlobContainerClient>>.Create();
stateMachine.<>4__this = this;
stateMachine.destinationContainerName = destinationContainerName;
stateMachine.sourceConditions = sourceConditions;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Pageable<TaggedBlobItem> FindBlobsByTags(string tagFilterSqlExpression, CancellationToken cancellationToken = default(CancellationToken))
{
return new FilterBlobsAsyncCollection(this, tagFilterSqlExpression).ToSyncCollection(cancellationToken);
}
public virtual AsyncPageable<TaggedBlobItem> FindBlobsByTagsAsync(string tagFilterSqlExpression, CancellationToken cancellationToken = default(CancellationToken))
{
return new FilterBlobsAsyncCollection(this, tagFilterSqlExpression).ToAsyncCollection(cancellationToken);
}
[AsyncStateMachine(typeof(<FindBlobsByTagsInternal>d__93))]
internal Task<Response<FilterBlobSegment>> FindBlobsByTagsInternal(string marker, string expression, int? pageSizeHint, bool async, CancellationToken cancellationToken)
{
<FindBlobsByTagsInternal>d__93 stateMachine = default(<FindBlobsByTagsInternal>d__93);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<FilterBlobSegment>>.Create();
stateMachine.<>4__this = this;
stateMachine.marker = marker;
stateMachine.expression = expression;
stateMachine.pageSizeHint = pageSizeHint;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
public virtual Response<AccountInfo> GetAccountInfo(CancellationToken cancellationToken = default(CancellationToken))
{
return GetAccountInfoInternal(false, cancellationToken).EnsureCompleted();
}
[AsyncStateMachine(typeof(<GetAccountInfoAsync>d__95))]
public virtual Task<Response<AccountInfo>> GetAccountInfoAsync(CancellationToken cancellationToken = default(CancellationToken))
{
<GetAccountInfoAsync>d__95 stateMachine = default(<GetAccountInfoAsync>d__95);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<AccountInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[AsyncStateMachine(typeof(<GetAccountInfoInternal>d__96))]
private Task<Response<AccountInfo>> GetAccountInfoInternal(bool async, CancellationToken cancellationToken)
{
<GetAccountInfoInternal>d__96 stateMachine = default(<GetAccountInfoInternal>d__96);
stateMachine.<>t__builder = AsyncTaskMethodBuilder<Response<AccountInfo>>.Create();
stateMachine.<>4__this = this;
stateMachine.async = async;
stateMachine.cancellationToken = cancellationToken;
stateMachine.<>1__state = -1;
stateMachine.<>t__builder.Start(ref stateMachine);
return stateMachine.<>t__builder.Task;
}
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn)
{
string stringToSign;
return GenerateSasUri(permissions, expiresOn, out stringToSign);
}
[EditorBrowsable(EditorBrowsableState.Never)]
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn, out string stringToSign)
{
return GenerateSasUri(new BlobSasBuilder(permissions, expiresOn) {
BlobContainerName = Name
}, out stringToSign);
}
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateSasUri(BlobSasBuilder builder)
{
string stringToSign;
return GenerateSasUri(builder, out stringToSign);
}
[EditorBrowsable(EditorBrowsableState.Never)]
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateSasUri(BlobSasBuilder builder, out string stringToSign)
{
BlobSasBuilder blobSasBuilder = builder;
if (blobSasBuilder == null)
throw Errors.ArgumentNull("builder");
builder = blobSasBuilder;
builder = BlobSasBuilder.DeepCopy(builder);
SetBuilderAndValidate(builder);
return new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
Sas = builder.ToSasQueryParameters(ClientConfiguration.SharedKeyCredential, out stringToSign)
}.ToUri();
}
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateUserDelegationSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn, UserDelegationKey userDelegationKey)
{
string stringToSign;
return GenerateUserDelegationSasUri(permissions, expiresOn, userDelegationKey, out stringToSign);
}
[EditorBrowsable(EditorBrowsableState.Never)]
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateUserDelegationSasUri(BlobContainerSasPermissions permissions, DateTimeOffset expiresOn, UserDelegationKey userDelegationKey, out string stringToSign)
{
return GenerateUserDelegationSasUri(new BlobSasBuilder(permissions, expiresOn) {
BlobContainerName = Name
}, userDelegationKey, out stringToSign);
}
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateUserDelegationSasUri(BlobSasBuilder builder, UserDelegationKey userDelegationKey)
{
string stringToSign;
return GenerateUserDelegationSasUri(builder, userDelegationKey, out stringToSign);
}
[EditorBrowsable(EditorBrowsableState.Never)]
[CallerShouldAudit("https://aka.ms/azsdk/callershouldaudit/storage-blobs")]
public virtual Uri GenerateUserDelegationSasUri(BlobSasBuilder builder, UserDelegationKey userDelegationKey, out string stringToSign)
{
BlobSasBuilder blobSasBuilder = builder;
if (blobSasBuilder == null)
throw Errors.ArgumentNull("builder");
builder = blobSasBuilder;
UserDelegationKey userDelegationKey2 = userDelegationKey;
if (userDelegationKey2 == null)
throw Errors.ArgumentNull("userDelegationKey");
userDelegationKey = userDelegationKey2;
builder = BlobSasBuilder.DeepCopy(builder);
SetBuilderAndValidate(builder);
if (string.IsNullOrEmpty(AccountName))
throw Errors.SasClientMissingData("AccountName");
return new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
Sas = builder.ToSasQueryParameters(userDelegationKey, AccountName, out stringToSign)
}.ToUri();
}
protected internal virtual BlobServiceClient GetParentBlobServiceClientCore()
{
if (_parentBlobServiceClient == null) {
BlobUriBuilder blobUriBuilder = new BlobUriBuilder(Uri, ClientConfiguration.TrimBlobNameSlashes) {
BlobContainerName = null,
BlobName = null,
VersionId = null,
Snapshot = null
};
_parentBlobServiceClient = new BlobServiceClient(blobUriBuilder.ToUri(), ClientConfiguration, AuthenticationPolicy, ClientSideEncryption);
}
return _parentBlobServiceClient;
}
private void SetBuilderAndValidate(BlobSasBuilder builder)
{
if (builder.BlobContainerName == null) {
string text = builder.BlobContainerName = Name;
}
if (!builder.BlobContainerName.Equals(Name, StringComparison.InvariantCulture))
throw Errors.SasNamesNotMatching("BlobContainerName", "BlobSasBuilder", "Name");
if (!string.IsNullOrEmpty(builder.BlobName))
throw Errors.SasBuilderEmptyParam("builder", "BlobName", "Name");
}
}
}