// ***********************************************************************
// 
//     AgileWebs
// 
// ***********************************************************************
namespace Core.Cerberos.External.Helpers.Token
{
    /// 
    /// Class to inject the token in all requests.
    /// 
    public class AuthenticatedHttpClientHandler : DelegatingHandler
    {
        private readonly ITokenProvider _tokenProvider;
        public AuthenticatedHttpClientHandler(ITokenProvider tokenProvider)
        {
            _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);
        }
    }
}