Bladeren bron

Merge pull request #3935 from crobibero/default-http-client

Add Default Http Client
Bond-009 4 jaren geleden
bovenliggende
commit
5c50d5356c

+ 17 - 2
Jellyfin.Server/Startup.cs

@@ -1,13 +1,14 @@
 using System;
 using System.ComponentModel;
+using System.Net.Http.Headers;
 using Jellyfin.Api.TypeConverters;
 using Jellyfin.Server.Extensions;
 using Jellyfin.Server.Middleware;
 using Jellyfin.Server.Models;
 using MediaBrowser.Common;
+using MediaBrowser.Common.Net;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Model.Serialization;
 using Microsoft.AspNetCore.Builder;
 using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.DependencyInjection;
@@ -51,7 +52,21 @@ namespace Jellyfin.Server
             services.AddCustomAuthentication();
 
             services.AddJellyfinApiAuthorization();
-            services.AddHttpClient();
+
+            var productHeader = new ProductInfoHeaderValue(_applicationHost.Name.Replace(' ', '-'), _applicationHost.ApplicationVersionString);
+            services
+                .AddHttpClient(NamedClient.Default, c =>
+                {
+                    c.DefaultRequestHeaders.UserAgent.Add(productHeader);
+                })
+                .ConfigurePrimaryHttpMessageHandler(x => new DefaultHttpClientHandler());
+
+            services.AddHttpClient(NamedClient.MusicBrainz, c =>
+                {
+                    c.DefaultRequestHeaders.UserAgent.Add(productHeader);
+                    c.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue($"({_applicationHost.ApplicationUserAgentAddress})"));
+                })
+                .ConfigurePrimaryHttpMessageHandler(x => new DefaultHttpClientHandler());
         }
 
         /// <summary>

+ 20 - 0
MediaBrowser.Common/Net/DefaultHttpClientHandler.cs

@@ -0,0 +1,20 @@
+using System.Net;
+using System.Net.Http;
+
+namespace MediaBrowser.Common.Net
+{
+    /// <summary>
+    /// Default http client handler.
+    /// </summary>
+    public class DefaultHttpClientHandler : HttpClientHandler
+    {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="DefaultHttpClientHandler"/> class.
+        /// </summary>
+        public DefaultHttpClientHandler()
+        {
+            // TODO change to DecompressionMethods.All with .NET5
+            AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
+        }
+    }
+}

+ 18 - 0
MediaBrowser.Common/Net/NamedClient.cs

@@ -0,0 +1,18 @@
+namespace MediaBrowser.Common.Net
+{
+    /// <summary>
+    /// Registered http client names.
+    /// </summary>
+    public static class NamedClient
+    {
+        /// <summary>
+        /// Gets the value for the default named http client.
+        /// </summary>
+        public const string Default = nameof(Default);
+
+        /// <summary>
+        /// Gets the value for the MusicBrainz named http client.
+        /// </summary>
+        public const string MusicBrainz = nameof(MusicBrainz);
+    }
+}