📄
src/Infrastructure/YouTube/HttpClientInitializer.cs
using System.Net.Http; using System.Threading; using System.Threading.Tasks; using Google.Apis.Http; namespace Slopper.Infrastructure.YouTube; internal sealed class HttpClientInitializer(IYouTubeCredentialsProvider youTubeCredentialsProvider) : IConfigurableHttpClientInitializer, IHttpExecuteInterceptor { public void Initialize(ConfigurableHttpClient httpClient) => httpClient.MessageHandler.Credential = this; public async Task InterceptAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var credentials = await youTubeCredentialsProvider.GetCredentials(cancellationToken); var token = await credentials.GetAccessTokenForRequestAsync(request.RequestUri?.ToString(), cancellationToken); request.Headers.Authorization = new("Bearer", token); } }