using Azure.Identity; using Core.Blueprint.Storage.Contracts; using Core.Blueprint.Storage.Provider; using Microsoft.Extensions.Azure; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace Core.Blueprint.Storage.Configuration { public static class RegisterBlueprint { public static IServiceCollection AddBlobStorage(this IServiceCollection services, IConfiguration configuration) { var blobConnection = configuration.GetConnectionString("BlobStorage"); if (blobConnection == null || string.IsNullOrWhiteSpace(blobConnection)) { throw new ArgumentException("The BlobStorage configuration section is missing or empty."); } var chainedCredentials = new ChainedTokenCredential( new ManagedIdentityCredential(), new SharedTokenCacheCredential(), new VisualStudioCredential(), new VisualStudioCodeCredential() ); services.AddAzureClients(cfg => { cfg.AddBlobServiceClient(new Uri(blobConnection)).WithCredential(chainedCredentials); }); services.AddScoped(); return services; } } }