📄
src/Integrations/HomeAssistant/ServiceCollectionExtensions.cs
using System.Net.Http.Headers; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace MMirror.Integrations.HomeAssistant; public static class ServiceCollectionExtensions { extension(IServiceCollection services) { public IServiceCollection AddHomeAssistantServices() { services.AddOptions<HomeAssistantOptions>().BindConfiguration("HomeAssistant").ValidateOnStart(); services.AddTransient<IValidateOptions<HomeAssistantOptions>, HomeAssistantOptionsValidator>(); services .AddHttpClient<HomeAssistantClient>() .ConfigureHttpClient( (sp, client) => { var homeAssistantOptions = sp.GetRequiredService<IOptions<HomeAssistantOptions>>().Value; client.BaseAddress = homeAssistantOptions.BaseAddress; client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", homeAssistantOptions.Token ); } ) .AddStandardResilienceHandler(); return services; } } }