Răsfoiți Sursa

Remove attributes

David 4 ani în urmă
părinte
comite
e0499f8769

+ 6 - 1
MediaBrowser.Providers/Plugins/Omdb/OmdbItemProvider.cs

@@ -11,6 +11,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using MediaBrowser.Common;
 using MediaBrowser.Common.Json;
+using MediaBrowser.Common.Json.Converters;
 using MediaBrowser.Common.Net;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
@@ -32,7 +33,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
         private readonly IFileSystem _fileSystem;
         private readonly IServerConfigurationManager _configurationManager;
         private readonly IApplicationHost _appHost;
-        private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
+        private readonly JsonSerializerOptions _jsonOptions;
 
         public OmdbItemProvider(
             IApplicationHost appHost,
@@ -46,6 +47,10 @@ namespace MediaBrowser.Providers.Plugins.Omdb
             _fileSystem = fileSystem;
             _configurationManager = configurationManager;
             _appHost = appHost;
+
+            _jsonOptions = new JsonSerializerOptions(JsonDefaults.GetOptions());
+            _jsonOptions.Converters.Add(new JsonOmdbNotAvailableStringConverter());
+            _jsonOptions.Converters.Add(new JsonOmdbNotAvailableStructConverter<int>());
         }
 
         public string Name => "The Open Movie Database";

+ 6 - 32
MediaBrowser.Providers/Plugins/Omdb/OmdbProvider.cs

@@ -30,7 +30,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
         private readonly IHttpClientFactory _httpClientFactory;
         private readonly CultureInfo _usCulture = new CultureInfo("en-US");
         private readonly IApplicationHost _appHost;
-        private static readonly JsonSerializerOptions _jsonOptions = JsonDefaults.GetOptions();
+        private readonly JsonSerializerOptions _jsonOptions;
 
         public OmdbProvider(IHttpClientFactory httpClientFactory, IFileSystem fileSystem, IApplicationHost appHost, IServerConfigurationManager configurationManager)
         {
@@ -38,6 +38,10 @@ namespace MediaBrowser.Providers.Plugins.Omdb
             _fileSystem = fileSystem;
             _configurationManager = configurationManager;
             _appHost = appHost;
+
+            _jsonOptions = new JsonSerializerOptions(JsonDefaults.GetOptions());
+            _jsonOptions.Converters.Add(new JsonOmdbNotAvailableStringConverter());
+            _jsonOptions.Converters.Add(new JsonOmdbNotAvailableStructConverter<int>());
         }
 
         public async Task Fetch<T>(MetadataResult<T> itemResult, string imdbId, string language, string country, CancellationToken cancellationToken)
@@ -344,7 +348,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
             return path;
         }
 
-        public static async Task<T> GetDeserializedOmdbResponse<T>(HttpClient httpClient, string url, CancellationToken cancellationToken)
+        public async Task<T> GetDeserializedOmdbResponse<T>(HttpClient httpClient, string url, CancellationToken cancellationToken)
         {
             using var response = await GetOmdbResponse(httpClient, url, cancellationToken).ConfigureAwait(false);
             var content = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
@@ -471,101 +475,71 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 
         public class SeasonRootObject
         {
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Title { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string seriesID { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStructConverter<int>))]
             public int? Season { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStructConverter<int>))]
             public int? totalSeasons { get; set; }
 
             public RootObject[] Episodes { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Response { get; set; }
         }
 
         public class RootObject
         {
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Title { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Year { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Rated { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Released { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Runtime { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Genre { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Director { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Writer { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Actors { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Plot { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Language { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Country { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Awards { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Poster { get; set; }
 
             public List<OmdbRating> Ratings { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Metascore { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string imdbRating { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string imdbVotes { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string imdbID { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Type { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string DVD { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string BoxOffice { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Production { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Website { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStringConverter))]
             public string Response { get; set; }
 
-            [JsonConverter(typeof(JsonOmdbNotAvailableStructConverter<int>))]
             public int? Episode { get; set; }
 
             public float? GetRottenTomatoScore()

+ 1 - 1
tests/Jellyfin.Common.Tests/Json/JsonOmdbConverterTests.cs

@@ -23,7 +23,7 @@ namespace Jellyfin.Common.Tests.Json
         public void Deserialize_Omdb_Response_Not_Available_Success()
         {
             const string Input = "{\"Title\":\"Chapter 1\",\"Year\":\"2013\",\"Rated\":\"TV-MA\",\"Released\":\"01 Feb 2013\",\"Season\":\"N/A\",\"Episode\":\"N/A\",\"Runtime\":\"55 min\",\"Genre\":\"Drama\",\"Director\":\"David Fincher\",\"Writer\":\"Michael Dobbs (based on the novels by), Andrew Davies (based on the mini-series by), Beau Willimon (created for television by), Beau Willimon, Sam Forman (staff writer)\",\"Actors\":\"Kevin Spacey, Robin Wright, Kate Mara, Corey Stoll\",\"Plot\":\"Congressman Francis Underwood has been declined the chair for Secretary of State. He's now gathering his own team to plot his revenge. Zoe Barnes, a reporter for the Washington Herald, will do anything to get her big break.\",\"Language\":\"English\",\"Country\":\"USA\",\"Awards\":\"N/A\",\"Poster\":\"https://m.media-amazon.com/images/M/MV5BMTY5MTU4NDQzNV5BMl5BanBnXkFtZTgwMzk2ODcxMzE@._V1_SX300.jpg\",\"Ratings\":[{\"Source\":\"Internet Movie Database\",\"Value\":\"8.7/10\"}],\"Metascore\":\"N/A\",\"imdbRating\":\"8.7\",\"imdbVotes\":\"6736\",\"imdbID\":\"tt2161930\",\"seriesID\":\"N/A\",\"Type\":\"episode\",\"Response\":\"True\"}";
-            var seasonRootObject = JsonSerializer.Deserialize<OmdbProvider.RootObject>(Input, JsonDefaults.GetOptions());
+            var seasonRootObject = JsonSerializer.Deserialize<OmdbProvider.RootObject>(Input, _options);
             Assert.NotNull(seasonRootObject);
             Assert.Null(seasonRootObject?.Awards);
             Assert.Null(seasonRootObject?.Episode);