diff options
| author | crobibero <cody@robibe.ro> | 2020-08-19 06:31:45 -0600 |
|---|---|---|
| committer | crobibero <cody@robibe.ro> | 2020-08-19 06:31:45 -0600 |
| commit | 076e17f35556c6d1257856896619e30eb494b2bb (patch) | |
| tree | 6078303f35f0cd2ac33a33fcf4558be88f86c248 /MediaBrowser.Common/Net/UserAgentDelegatingHandler.cs | |
| parent | 93fe595e5e9863874c1973e4f2d7f3c85549d3f9 (diff) | |
Add default http client
Diffstat (limited to 'MediaBrowser.Common/Net/UserAgentDelegatingHandler.cs')
| -rw-r--r-- | MediaBrowser.Common/Net/UserAgentDelegatingHandler.cs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/MediaBrowser.Common/Net/UserAgentDelegatingHandler.cs b/MediaBrowser.Common/Net/UserAgentDelegatingHandler.cs new file mode 100644 index 0000000000..f527c766f8 --- /dev/null +++ b/MediaBrowser.Common/Net/UserAgentDelegatingHandler.cs @@ -0,0 +1,52 @@ +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 +{ + /// <summary> + /// User agent delegating handler. + /// Adds User-Agent header to all requests. + /// </summary> + public class UserAgentDelegatingHandler : DelegatingHandler + { + /// <inheritdoc /> + public UserAgentDelegatingHandler(IApplicationHost applicationHost) + { + UserAgentValues = new List<ProductInfoHeaderValue> + { + new ProductInfoHeaderValue(applicationHost.Name.Replace(' ', '-'), applicationHost.ApplicationVersionString), + new ProductInfoHeaderValue($"({Environment.OSVersion}; {applicationHost.ApplicationUserAgentAddress})") + }; + } + + /// <summary> + /// Gets or sets the user agent values. + /// </summary> + public List<ProductInfoHeaderValue> UserAgentValues { get; set; } + + /// <summary> + /// Send request message. + /// </summary> + /// <param name="request">The request message.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>A <see cref="Task"/> containing the <see cref="HttpResponseMessage"/>.</returns> + protected override Task<HttpResponseMessage> 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); + } + } +} |
