using System.Net; using System.Net.Http.Headers; using System.Text; namespace Cleanuparr.Infrastructure.Http.DynamicHttpClientSystem; /// /// Sends Basic auth up front for qBittorrent, Deluge and SABnzbd behind a reverse proxy. /// Skips requests that already carry an Authorization header. /// public sealed class BasicAuthHttpMessageHandler : DelegatingHandler { private readonly string _headerValue; public BasicAuthHttpMessageHandler(NetworkCredential credential) { string raw = $"{credential.UserName}:{credential.Password}"; _headerValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(raw)); } protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { request.Headers.Authorization ??= new AuthenticationHeaderValue("Basic", _headerValue); return base.SendAsync(request, cancellationToken); } }