using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Common.Net { /// /// User agent delegating handler. /// Adds User-Agent header to all requests. /// public class UserAgentDelegatingHandler : DelegatingHandler { /// public UserAgentDelegatingHandler(IApplicationHost applicationHost) { UserAgentValues = new List { new ProductInfoHeaderValue(applicationHost.Name.Replace(' ', '-'), applicationHost.ApplicationVersionString), new ProductInfoHeaderValue($"({Environment.OSVersion}; {applicationHost.ApplicationUserAgentAddress})") }; } /// /// Gets or sets the user agent values. /// public List UserAgentValues { get; set; } /// /// Send request message. /// /// The request message. /// The cancellation token. /// A containing the . protected override Task SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { if (request.Headers.UserAgent.Count == 0) { foreach (var userAgentValue in UserAgentValues) { request.Headers.UserAgent.Add(userAgentValue); } } return base.SendAsync(request, cancellationToken); } } }