📄
ServiceCollectionExtensions.cs
using System.Net.Http.Headers; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using MSearch.Domain; namespace MSearch.SearchProviders.TheMovieDb; public static class ServiceCollectionExtensions { public static IServiceCollection AddTheMovieDbSearchProvider(this IServiceCollection services) { services.AddOptions<TheMovieDbOptions>().BindConfiguration("SearchProviders:TheMovieDb").ValidateOnStart(); services.AddTransient<IValidateOptions<TheMovieDbOptions>, TheMovieDbOptionsValidator>(); services.AddHttpClient<ISearchProvider, TheMovieDbSearchProvider>( nameof(TheMovieDbSearchProvider), (sp, httpClient) => { var options = sp.GetRequiredService<IOptions<TheMovieDbOptions>>(); httpClient.BaseAddress = new("https://api.themoviedb.org/"); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", options.Value.ApiKey ); } ); return services; } }