using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; using azure.Auth; using azure.Config; using azure.ResourceGroups; using azure.Storage; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace azure.resources { public static class ServiceCollectionExtensions { public static IServiceCollection AddAzureServices( this IServiceCollection services, Action configureAzureOptions, Action configureAzureADAuthOptions) { // Configure Azure options. var azureOptions = new AzureOptions(); configureAzureOptions(azureOptions); // Configure Azure AD authorization options. var azureADAuthOptions = new AzureADAuthOptions(); configureAzureADAuthOptions(azureADAuthOptions); // Register configuration settings. services .AddSingleton(azureOptions) .AddSingleton(azureADAuthOptions); // Add Azure services. services.AddTransient(); services .AddHttpClient((serviceProvider, client) => { var azureConfig = serviceProvider.GetRequiredService(); client.BaseAddress = new Uri($"https://management.azure.com/subscriptions/{azureConfig.SubscriptionId}/resourcegroups/"); }) .AddHttpMessageHandler(); services .AddHttpClient((serviceProvider, client) => { var azureConfig = serviceProvider.GetRequiredService(); client.BaseAddress = new Uri($"https://management.azure.com/subscriptions/{azureConfig.SubscriptionId}/providers/Microsoft.Storage/"); }) .AddHttpMessageHandler(); services .AddHttpClient((serviceProvider, client) => { var azureConfig = serviceProvider.GetRequiredService(); client.BaseAddress = new Uri($"https://management.azure.com/subscriptions/{azureConfig.SubscriptionId}/resourceGroups/"); }) .AddHttpMessageHandler(); return services; } } }