📄
ServiceCollectionExtensions.cs
using System.Net.Http; using Microsoft.Extensions.DependencyInjection; using MSearch.Domain; namespace MSearch.SearchProviders.GitHub; public static class ServiceCollectionExtensions { public static IServiceCollection AddGitHubSearchProvider(this IServiceCollection services) { services.AddHttpClient( nameof(GitHubSearchProvider), httpClient => { httpClient.BaseAddress = new("https://api.github.com/"); httpClient.DefaultRequestHeaders.Accept.ParseAdd("application/vnd.github+json"); httpClient.DefaultRequestHeaders.Add("X-GitHub-Api-Version", "2022-11-28"); } ); services.AddTransient<ISearchProvider>(sp => new GitHubSearchProvider( sp.GetRequiredService<IHttpClientFactory>().CreateClient(nameof(GitHubSearchProvider)), "issues" )); services.AddTransient<ISearchProvider>(sp => new GitHubSearchProvider( sp.GetRequiredService<IHttpClientFactory>().CreateClient(nameof(GitHubSearchProvider)), "repositories" )); return services; } }