// Copyright Epic Games, Inc. All Rights Reserved.
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
namespace EpicGames.Horde.Auth
{
///
/// Options for authenticating particular requests
///
public interface ITokenAuthOptions
{
///
/// Bearer token for auth
///
string Token { get; }
}
///
/// Http message handler which adds an OAuth authorization header using a cached/periodically refreshed bearer token
///
public class TokenHandler : HttpClientHandler
{
readonly ITokenAuthOptions _options;
///
/// Constructor
///
///
public TokenHandler(ITokenAuthOptions options)
{
_options = options;
}
///
protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
request.Headers.Add("Authorization", $"Bearer {_options.Token}");
return await base.SendAsync(request, cancellationToken);
}
}
}