diff options
| author | Bond-009 <bond.009@outlook.com> | 2021-02-24 22:02:47 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-24 22:02:47 +0100 |
| commit | 58609795007d4a5e4d9e94e92f7c82999ad8ad0a (patch) | |
| tree | 4397da12af7c90f6d7b966fe6a9c9e499d6e9755 /Emby.Server.Implementations/Library/LibraryManager.cs | |
| parent | 1569cc301cae443c49e65cb316162cc4bd5863e5 (diff) | |
| parent | 81f527f8083289ce8eab77d522f51f06c3a5a70c (diff) | |
Merge pull request #5301 from Bond-009/validinput
Diffstat (limited to 'Emby.Server.Implementations/Library/LibraryManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/Library/LibraryManager.cs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index db27862ce..d9ffe64b3 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1240,11 +1240,20 @@ namespace Emby.Server.Implementations.Library return info; } - private string GetCollectionType(string path) + private CollectionTypeOptions? GetCollectionType(string path) { - return _fileSystem.GetFilePaths(path, new[] { ".collection" }, true, false) - .Select(Path.GetFileNameWithoutExtension) - .FirstOrDefault(i => !string.IsNullOrEmpty(i)); + var files = _fileSystem.GetFilePaths(path, new[] { ".collection" }, true, false); + foreach (var file in files) + { + // TODO: @bond use a ReadOnlySpan<char> here when Enum.TryParse supports it + // https://github.com/dotnet/runtime/issues/20008 + if (Enum.TryParse<CollectionTypeOptions>(Path.GetExtension(file), true, out var res)) + { + return res; + } + } + + return null; } /// <summary> @@ -2956,7 +2965,7 @@ namespace Emby.Server.Implementations.Library throw new InvalidOperationException(); } - public async Task AddVirtualFolder(string name, string collectionType, LibraryOptions options, bool refreshLibrary) + public async Task AddVirtualFolder(string name, CollectionTypeOptions? collectionType, LibraryOptions options, bool refreshLibrary) { if (string.IsNullOrWhiteSpace(name)) { @@ -2990,9 +2999,9 @@ namespace Emby.Server.Implementations.Library { Directory.CreateDirectory(virtualFolderPath); - if (!string.IsNullOrEmpty(collectionType)) + if (collectionType != null) { - var path = Path.Combine(virtualFolderPath, collectionType + ".collection"); + var path = Path.Combine(virtualFolderPath, collectionType.ToString() + ".collection"); File.WriteAllBytes(path, Array.Empty<byte>()); } |
