// 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); } } }