From 00ca4abbe1138d880fca36e1f99da14e6fab252a Mon Sep 17 00:00:00 2001 From: gnattu Date: Tue, 24 Sep 2024 05:15:46 +0800 Subject: Sanitize CustomTagDelimiters server side The API requires an array type and does not support runtime generated default value. Use server side helper function to sanitize it into char. --- MediaBrowser.Model/Configuration/LibraryOptions.cs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'MediaBrowser.Model/Configuration/LibraryOptions.cs') diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs index 04283cc9e..b0fcc2d0a 100644 --- a/MediaBrowser.Model/Configuration/LibraryOptions.cs +++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs @@ -2,12 +2,13 @@ using System; using System.ComponentModel; +using System.Linq; namespace MediaBrowser.Model.Configuration { public class LibraryOptions { - private static readonly char[] _defaultTagDelimiters = ['/', '|', ';', '\\']; + private static readonly string[] _defaultTagDelimiters = ["/", "|", ";", "\\"]; public LibraryOptions() { @@ -126,8 +127,7 @@ namespace MediaBrowser.Model.Configuration [DefaultValue(false)] public bool UseCustomTagDelimiters { get; set; } - [DefaultValue(typeof(LibraryOptions), nameof(_defaultTagDelimiters))] - public char[] CustomTagDelimiters { get; set; } + public string[] CustomTagDelimiters { get; set; } public string[] DelimiterWhitelist { get; set; } @@ -149,5 +149,19 @@ namespace MediaBrowser.Model.Configuration return null; } + + public char[] GetCustomTagDelimiters() + { + return CustomTagDelimiters.Select(x => + { + var isChar = char.TryParse(x, out var c); + if (isChar) + { + return c; + } + + return null; + }).Where(x => x is not null).Select(x => x!.Value).ToArray(); + } } } -- cgit v1.2.3 From 0ffddacf11795b8a50606b6515c1dc6828ad8dd0 Mon Sep 17 00:00:00 2001 From: gnattu Date: Tue, 24 Sep 2024 12:36:05 +0800 Subject: Move GetCustomTagDelimiters to Extension --- MediaBrowser.Model/Configuration/LibraryOptions.cs | 14 ---------- .../Extensions/LibraryOptionsExtension.cs | 32 ++++++++++++++++++++++ .../MediaInfo/AudioFileProber.cs | 1 + 3 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 MediaBrowser.Model/Extensions/LibraryOptionsExtension.cs (limited to 'MediaBrowser.Model/Configuration/LibraryOptions.cs') diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs index b0fcc2d0a..6054ba34e 100644 --- a/MediaBrowser.Model/Configuration/LibraryOptions.cs +++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs @@ -149,19 +149,5 @@ namespace MediaBrowser.Model.Configuration return null; } - - public char[] GetCustomTagDelimiters() - { - return CustomTagDelimiters.Select(x => - { - var isChar = char.TryParse(x, out var c); - if (isChar) - { - return c; - } - - return null; - }).Where(x => x is not null).Select(x => x!.Value).ToArray(); - } } } diff --git a/MediaBrowser.Model/Extensions/LibraryOptionsExtension.cs b/MediaBrowser.Model/Extensions/LibraryOptionsExtension.cs new file mode 100644 index 000000000..4a814f22a --- /dev/null +++ b/MediaBrowser.Model/Extensions/LibraryOptionsExtension.cs @@ -0,0 +1,32 @@ +using System; +using System.Linq; +using MediaBrowser.Model.Configuration; + +namespace MediaBrowser.Model.Extensions; + +/// +/// Extensions for . +/// +public static class LibraryOptionsExtension +{ + /// + /// Get the custom tag delimiters. + /// + /// This LibraryOptions. + /// CustomTagDelimiters in char[]. + public static char[] GetCustomTagDelimiters(this LibraryOptions options) + { + ArgumentNullException.ThrowIfNull(options); + + return options.CustomTagDelimiters.Select(x => + { + var isChar = char.TryParse(x, out var c); + if (isChar) + { + return c; + } + + return null; + }).Where(x => x is not null).Select(x => x!.Value).ToArray(); + } +} diff --git a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs index 2e0d21c6a..cb233d31e 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs @@ -16,6 +16,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.MediaInfo; using Microsoft.Extensions.Logging; -- cgit v1.2.3 From 1c77e9606e32edf61e24100475112699c0e0f8bf Mon Sep 17 00:00:00 2001 From: Niels van Velzen Date: Sun, 24 Nov 2024 14:53:08 +0100 Subject: Fix typo in LibraryOptions --- Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs | 2 +- MediaBrowser.Model/Configuration/LibraryOptions.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'MediaBrowser.Model/Configuration/LibraryOptions.cs') diff --git a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs index a044fec0d..2d3a25357 100644 --- a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs +++ b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs @@ -61,7 +61,7 @@ public class MediaSegmentManager : IMediaSegmentManager .Where(e => !libraryOptions.DisabledMediaSegmentProviders.Contains(GetProviderId(e.Name))) .OrderBy(i => { - var index = libraryOptions.MediaSegmentProvideOrder.IndexOf(i.Name); + var index = libraryOptions.MediaSegmentProviderOrder.IndexOf(i.Name); return index == -1 ? int.MaxValue : index; }) .ToList(); diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs index 6054ba34e..590b74304 100644 --- a/MediaBrowser.Model/Configuration/LibraryOptions.cs +++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Model.Configuration TypeOptions = Array.Empty(); DisabledSubtitleFetchers = Array.Empty(); DisabledMediaSegmentProviders = Array.Empty(); - MediaSegmentProvideOrder = Array.Empty(); + MediaSegmentProviderOrder = Array.Empty(); SubtitleFetcherOrder = Array.Empty(); DisabledLocalMetadataReaders = Array.Empty(); DisabledLyricFetchers = Array.Empty(); @@ -99,7 +99,7 @@ namespace MediaBrowser.Model.Configuration public string[] DisabledMediaSegmentProviders { get; set; } - public string[] MediaSegmentProvideOrder { get; set; } + public string[] MediaSegmentProviderOrder { get; set; } public bool SkipSubtitlesIfEmbeddedSubtitlesPresent { get; set; } -- cgit v1.2.3