// ***********************************************************************
// 
//     AgileWebs
// 
// ***********************************************************************
namespace Core.Thalos.BuildingBlocks
{
    /// 
    /// Class to inject the token in all requests.
    /// 
    public class AuthenticatedHttpClientHandler(ITokenProvider tokenProvider) : DelegatingHandler
    {
        private readonly ITokenProvider _tokenProvider = tokenProvider;
        protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            var token = _tokenProvider.GetToken();
            if (!string.IsNullOrEmpty(token))
            {
                request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
            }
            return await base.SendAsync(request, cancellationToken);
        }
    }
}