BlobClientBuilderExtensions
Extension methods to add BlobServiceClient client to clients builder.
using Azure;
using Azure.Core;
using Azure.Core.Extensions;
using Azure.Storage;
using Azure.Storage.Blobs;
using System;
using System.Diagnostics.CodeAnalysis;
namespace Microsoft.Extensions.Azure
{
public static class BlobClientBuilderExtensions
{
public static IAzureClientBuilder<BlobServiceClient, BlobClientOptions> AddBlobServiceClient<TBuilder>(this TBuilder builder, string connectionString) where TBuilder : IAzureClientFactoryBuilder
{
ref TBuilder reference = ref builder;
TBuilder val = default(TBuilder);
if (val == null) {
val = reference;
ref reference = ref val;
}
return reference.RegisterClientFactory<BlobServiceClient, BlobClientOptions>((Func<BlobClientOptions, BlobServiceClient>)((BlobClientOptions options) => new BlobServiceClient(connectionString, options)));
}
public static IAzureClientBuilder<BlobServiceClient, BlobClientOptions> AddBlobServiceClient<TBuilder>(this TBuilder builder, Uri serviceUri) where TBuilder : IAzureClientFactoryBuilderWithCredential
{
ref TBuilder reference = ref builder;
TBuilder val = default(TBuilder);
if (val == null) {
val = reference;
ref reference = ref val;
}
return reference.RegisterClientFactory<BlobServiceClient, BlobClientOptions>((Func<BlobClientOptions, TokenCredential, BlobServiceClient>)delegate(BlobClientOptions options, TokenCredential token) {
if (token == null)
return new BlobServiceClient(serviceUri, options);
return new BlobServiceClient(serviceUri, token, options);
}, false);
}
public static IAzureClientBuilder<BlobServiceClient, BlobClientOptions> <>(this TBuilder builder, Uri serviceUri, StorageSharedKeyCredential sharedKeyCredential) where : IAzureClientFactoryBuilder
{
ref TBuilder reference = ref builder;
TBuilder val = default(TBuilder);
if (val == null) {
val = reference;
ref reference = ref val;
}
return reference.RegisterClientFactory<BlobServiceClient, BlobClientOptions>((Func<BlobClientOptions, BlobServiceClient>)((BlobClientOptions options) => new BlobServiceClient(serviceUri, sharedKeyCredential, options)));
}
public static IAzureClientBuilder<BlobServiceClient, BlobClientOptions> AddBlobServiceClient<TBuilder>(this TBuilder builder, Uri serviceUri, TokenCredential tokenCredential) where TBuilder : IAzureClientFactoryBuilderWithCredential
{
ref TBuilder reference = ref builder;
TBuilder val = default(TBuilder);
if (val == null) {
val = reference;
ref reference = ref val;
}
return reference.RegisterClientFactory<BlobServiceClient, BlobClientOptions>((Func<BlobClientOptions, TokenCredential, BlobServiceClient>)((BlobClientOptions options, TokenCredential token) => new BlobServiceClient(serviceUri, token, options)), true);
}
public static IAzureClientBuilder<BlobServiceClient, BlobClientOptions> AddBlobServiceClient<TBuilder>(this TBuilder builder, Uri serviceUri, AzureSasCredential sasCredential) where TBuilder : IAzureClientFactoryBuilder
{
ref TBuilder reference = ref builder;
TBuilder val = default(TBuilder);
if (val == null) {
val = reference;
ref reference = ref val;
}
return reference.RegisterClientFactory<BlobServiceClient, BlobClientOptions>((Func<BlobClientOptions, BlobServiceClient>)((BlobClientOptions options) => new BlobServiceClient(serviceUri, sasCredential, options)));
}
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Binding strongly typed objects to configuration values is not supported with trimming. Use the Configuration Binder Source Generator (EnableConfigurationBindingGenerator=true) instead.")]
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Binding strongly typed objects to configuration values requires generating dynamic code at runtime, for example instantiating generic types. Use the Configuration Binder Source Generator (EnableConfigurationBindingGenerator=true) instead.")]
public static IAzureClientBuilder<BlobServiceClient, BlobClientOptions> AddBlobServiceClient<TBuilder, TConfiguration>(this TBuilder builder, TConfiguration configuration) where TBuilder : IAzureClientFactoryBuilderWithConfiguration<TConfiguration>
{
return builder.RegisterClientFactory<BlobServiceClient, BlobClientOptions>(configuration);
}
}
}