Browse Source

Use ArgumentException.ThrowIfNullOrEmpty

Bond_009 2 years ago
parent
commit
b366dc2e6e
58 changed files with 130 additions and 549 deletions
  1. 4 16
      Emby.Dlna/DlnaManager.cs
  2. 1 4
      Emby.Dlna/PlayTo/Device.cs
  3. 2 8
      Emby.Dlna/PlayTo/PlayToController.cs
  4. 2 9
      Emby.Dlna/Server/DescriptionXmlBuilder.cs
  5. 3 14
      Emby.Drawing/ImageProcessor.cs
  6. 1 4
      Emby.Server.Implementations/Channels/ChannelManager.cs
  7. 2 8
      Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
  8. 1 4
      Emby.Server.Implementations/Data/TypeMapper.cs
  9. 2 8
      Emby.Server.Implementations/IO/FileRefresher.cs
  10. 4 16
      Emby.Server.Implementations/IO/LibraryMonitor.cs
  11. 9 39
      Emby.Server.Implementations/IO/ManagedFileSystem.cs
  12. 3 13
      Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs
  13. 4 17
      Emby.Server.Implementations/Library/LibraryManager.cs
  14. 4 16
      Emby.Server.Implementations/Library/MediaSourceManager.cs
  15. 1 4
      Emby.Server.Implementations/Library/ResolverHelper.cs
  16. 1 4
      Emby.Server.Implementations/Library/SearchEngine.cs
  17. 1 4
      Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs
  18. 1 4
      Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs
  19. 10 42
      Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
  20. 3 12
      Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs
  21. 3 12
      Emby.Server.Implementations/Localization/LocalizationManager.cs
  22. 2 9
      Emby.Server.Implementations/Playlists/PlaylistManager.cs
  23. 1 4
      Emby.Server.Implementations/Plugins/PluginManager.cs
  24. 4 19
      Emby.Server.Implementations/QuickConnect/QuickConnectManager.cs
  25. 6 26
      Emby.Server.Implementations/Session/SessionManager.cs
  26. 1 4
      Jellyfin.Api/Controllers/SessionController.cs
  27. 2 8
      Jellyfin.Api/Helpers/TranscodingJobHelper.cs
  28. 2 9
      Jellyfin.Data/Entities/ActivityLog.cs
  29. 1 4
      Jellyfin.Data/Entities/Group.cs
  30. 1 4
      Jellyfin.Data/Entities/Libraries/Artwork.cs
  31. 1 4
      Jellyfin.Data/Entities/Libraries/Chapter.cs
  32. 2 9
      Jellyfin.Data/Entities/Libraries/ItemMetadata.cs
  33. 1 4
      Jellyfin.Data/Entities/Libraries/MediaFile.cs
  34. 1 4
      Jellyfin.Data/Entities/Libraries/MetadataProvider.cs
  35. 1 4
      Jellyfin.Data/Entities/Libraries/MetadataProviderId.cs
  36. 1 4
      Jellyfin.Data/Entities/Libraries/Person.cs
  37. 1 4
      Jellyfin.Data/Entities/Libraries/Release.cs
  38. 3 14
      Jellyfin.Data/Entities/User.cs
  39. 3 15
      Jellyfin.Drawing.Skia/SkiaEncoder.cs
  40. 1 5
      Jellyfin.Server.Implementations/Devices/DeviceManager.cs
  41. 2 8
      MediaBrowser.Controller/Entities/BaseItem.cs
  42. 1 6
      MediaBrowser.Controller/Entities/Extensions.cs
  43. 1 5
      MediaBrowser.Controller/Entities/PeopleHelper.cs
  44. 1 4
      MediaBrowser.Controller/IO/FileData.cs
  45. 3 12
      MediaBrowser.Controller/Library/ItemResolveArgs.cs
  46. 1 5
      MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs
  47. 4 17
      MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
  48. 1 4
      MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
  49. 6 21
      MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
  50. 1 6
      MediaBrowser.Model/Cryptography/PasswordHash.cs
  51. 1 4
      MediaBrowser.Model/Dlna/SearchCriteria.cs
  52. 1 4
      MediaBrowser.Model/Dlna/StreamBuilder.cs
  53. 2 8
      MediaBrowser.Model/Dlna/StreamInfo.cs
  54. 2 8
      MediaBrowser.Model/Net/MimeTypes.cs
  55. 1 4
      MediaBrowser.Providers/Manager/ImageSaver.cs
  56. 2 9
      MediaBrowser.Providers/Manager/MetadataService.cs
  57. 2 8
      MediaBrowser.Providers/Plugins/Omdb/OmdbProvider.cs
  58. 1 4
      MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs

+ 4 - 16
Emby.Dlna/DlnaManager.cs

@@ -265,10 +265,7 @@ namespace Emby.Dlna
         /// <inheritdoc />
         /// <inheritdoc />
         public DeviceProfile? GetProfile(string id)
         public DeviceProfile? GetProfile(string id)
         {
         {
-            if (string.IsNullOrEmpty(id))
-            {
-                throw new ArgumentNullException(nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
 
             var info = GetProfileInfosInternal().FirstOrDefault(i => string.Equals(i.Info.Id, id, StringComparison.OrdinalIgnoreCase));
             var info = GetProfileInfosInternal().FirstOrDefault(i => string.Equals(i.Info.Id, id, StringComparison.OrdinalIgnoreCase));
 
 
@@ -371,10 +368,7 @@ namespace Emby.Dlna
         {
         {
             profile = ReserializeProfile(profile);
             profile = ReserializeProfile(profile);
 
 
-            if (string.IsNullOrEmpty(profile.Name))
-            {
-                throw new ArgumentException("Profile is missing Name");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(profile.Name);
 
 
             var newFilename = _fileSystem.GetValidFilename(profile.Name) + ".xml";
             var newFilename = _fileSystem.GetValidFilename(profile.Name) + ".xml";
             var path = Path.Combine(UserProfilesPath, newFilename);
             var path = Path.Combine(UserProfilesPath, newFilename);
@@ -387,15 +381,9 @@ namespace Emby.Dlna
         {
         {
             profile = ReserializeProfile(profile);
             profile = ReserializeProfile(profile);
 
 
-            if (string.IsNullOrEmpty(profile.Id))
-            {
-                throw new ArgumentException("Profile is missing Id");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(profile.Id);
 
 
-            if (string.IsNullOrEmpty(profile.Name))
-            {
-                throw new ArgumentException("Profile is missing Name");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(profile.Name);
 
 
             var current = GetProfileInfosInternal().First(i => string.Equals(i.Info.Id, profileId, StringComparison.OrdinalIgnoreCase));
             var current = GetProfileInfosInternal().First(i => string.Equals(i.Info.Id, profileId, StringComparison.OrdinalIgnoreCase));
             if (current.Info.Type == DeviceProfileType.System)
             if (current.Info.Type == DeviceProfileType.System)

+ 1 - 4
Emby.Dlna/PlayTo/Device.cs

@@ -1017,10 +1017,7 @@ namespace Emby.Dlna.PlayTo
             }
             }
 
 
             var avService = GetServiceRenderingControl();
             var avService = GetServiceRenderingControl();
-            if (avService is null)
-            {
-                throw new ArgumentException("Device AvService is null");
-            }
+            ArgumentNullException.ThrowIfNull(avService);
 
 
             string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
             string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
 
 

+ 2 - 8
Emby.Dlna/PlayTo/PlayToController.cs

@@ -936,10 +936,7 @@ namespace Emby.Dlna.PlayTo
 
 
             private static Guid GetItemId(string url)
             private static Guid GetItemId(string url)
             {
             {
-                if (string.IsNullOrEmpty(url))
-                {
-                    throw new ArgumentNullException(nameof(url));
-                }
+                ArgumentException.ThrowIfNullOrEmpty(url);
 
 
                 var parts = url.Split('/');
                 var parts = url.Split('/');
 
 
@@ -962,10 +959,7 @@ namespace Emby.Dlna.PlayTo
 
 
             public static StreamParams ParseFromUrl(string url, ILibraryManager libraryManager, IMediaSourceManager mediaSourceManager)
             public static StreamParams ParseFromUrl(string url, ILibraryManager libraryManager, IMediaSourceManager mediaSourceManager)
             {
             {
-                if (string.IsNullOrEmpty(url))
-                {
-                    throw new ArgumentNullException(nameof(url));
-                }
+                ArgumentException.ThrowIfNullOrEmpty(url);
 
 
                 var request = new StreamParams
                 var request = new StreamParams
                 {
                 {

+ 2 - 9
Emby.Dlna/Server/DescriptionXmlBuilder.cs

@@ -22,15 +22,8 @@ namespace Emby.Dlna.Server
 
 
         public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress, string serverName, string serverId)
         public DescriptionXmlBuilder(DeviceProfile profile, string serverUdn, string serverAddress, string serverName, string serverId)
         {
         {
-            if (string.IsNullOrEmpty(serverUdn))
-            {
-                throw new ArgumentNullException(nameof(serverUdn));
-            }
-
-            if (string.IsNullOrEmpty(serverAddress))
-            {
-                throw new ArgumentNullException(nameof(serverAddress));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(serverUdn);
+            ArgumentException.ThrowIfNullOrEmpty(serverAddress);
 
 
             _profile = profile;
             _profile = profile;
             _serverUdn = serverUdn;
             _serverUdn = serverUdn;

+ 3 - 14
Emby.Drawing/ImageProcessor.cs

@@ -503,20 +503,9 @@ namespace Emby.Drawing
         /// </exception>
         /// </exception>
         public string GetCachePath(string path, string uniqueName, string fileExtension)
         public string GetCachePath(string path, string uniqueName, string fileExtension)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
-
-            if (string.IsNullOrEmpty(uniqueName))
-            {
-                throw new ArgumentNullException(nameof(uniqueName));
-            }
-
-            if (string.IsNullOrEmpty(fileExtension))
-            {
-                throw new ArgumentNullException(nameof(fileExtension));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
+            ArgumentException.ThrowIfNullOrEmpty(uniqueName);
+            ArgumentException.ThrowIfNullOrEmpty(fileExtension);
 
 
             var filename = uniqueName.GetMD5() + fileExtension;
             var filename = uniqueName.GetMD5() + fileExtension;
 
 

+ 1 - 4
Emby.Server.Implementations/Channels/ChannelManager.cs

@@ -601,10 +601,7 @@ namespace Emby.Server.Implementations.Channels
 
 
         private Guid GetInternalChannelId(string name)
         private Guid GetInternalChannelId(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             return _libraryManager.GetNewItemId("Channel " + name, typeof(Channel));
             return _libraryManager.GetNewItemId("Channel " + name, typeof(Channel));
         }
         }

+ 2 - 8
Emby.Server.Implementations/Data/SqliteUserDataRepository.cs

@@ -140,10 +140,7 @@ namespace Emby.Server.Implementations.Data
                 throw new ArgumentNullException(nameof(userId));
                 throw new ArgumentNullException(nameof(userId));
             }
             }
 
 
-            if (string.IsNullOrEmpty(key))
-            {
-                throw new ArgumentNullException(nameof(key));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(key);
 
 
             PersistUserData(userId, key, userData, cancellationToken);
             PersistUserData(userId, key, userData, cancellationToken);
         }
         }
@@ -274,10 +271,7 @@ namespace Emby.Server.Implementations.Data
                 throw new ArgumentNullException(nameof(userId));
                 throw new ArgumentNullException(nameof(userId));
             }
             }
 
 
-            if (string.IsNullOrEmpty(key))
-            {
-                throw new ArgumentNullException(nameof(key));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(key);
 
 
             using (var connection = GetConnection(true))
             using (var connection = GetConnection(true))
             {
             {

+ 1 - 4
Emby.Server.Implementations/Data/TypeMapper.cs

@@ -23,10 +23,7 @@ namespace Emby.Server.Implementations.Data
         /// <exception cref="ArgumentNullException"><c>typeName</c> is null.</exception>
         /// <exception cref="ArgumentNullException"><c>typeName</c> is null.</exception>
         public Type? GetType(string typeName)
         public Type? GetType(string typeName)
         {
         {
-            if (string.IsNullOrEmpty(typeName))
-            {
-                throw new ArgumentNullException(nameof(typeName));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(typeName);
 
 
             return _typeMap.GetOrAdd(typeName, k => AppDomain.CurrentDomain.GetAssemblies()
             return _typeMap.GetOrAdd(typeName, k => AppDomain.CurrentDomain.GetAssemblies()
                 .Select(a => a.GetType(k))
                 .Select(a => a.GetType(k))

+ 2 - 8
Emby.Server.Implementations/IO/FileRefresher.cs

@@ -40,10 +40,7 @@ namespace Emby.Server.Implementations.IO
 
 
         private void AddAffectedPath(string path)
         private void AddAffectedPath(string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             if (!_affectedPaths.Contains(path, StringComparer.Ordinal))
             if (!_affectedPaths.Contains(path, StringComparer.Ordinal))
             {
             {
@@ -53,10 +50,7 @@ namespace Emby.Server.Implementations.IO
 
 
         public void AddPath(string path)
         public void AddPath(string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             lock (_timerLock)
             lock (_timerLock)
             {
             {

+ 4 - 16
Emby.Server.Implementations/IO/LibraryMonitor.cs

@@ -71,20 +71,14 @@ namespace Emby.Server.Implementations.IO
 
 
         public void ReportFileSystemChangeBeginning(string path)
         public void ReportFileSystemChangeBeginning(string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             TemporarilyIgnore(path);
             TemporarilyIgnore(path);
         }
         }
 
 
         public async void ReportFileSystemChangeComplete(string path, bool refreshPath)
         public async void ReportFileSystemChangeComplete(string path, bool refreshPath)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             // This is an arbitrary amount of time, but delay it because file system writes often trigger events long after the file was actually written to.
             // This is an arbitrary amount of time, but delay it because file system writes often trigger events long after the file was actually written to.
             // Seeing long delays in some situations, especially over the network, sometimes up to 45 seconds
             // Seeing long delays in some situations, especially over the network, sometimes up to 45 seconds
@@ -197,10 +191,7 @@ namespace Emby.Server.Implementations.IO
         /// <exception cref="ArgumentNullException"><paramref name="path"/> is <c>null</c>.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="path"/> is <c>null</c>.</exception>
         private static bool ContainsParentFolder(IEnumerable<string> lst, string path)
         private static bool ContainsParentFolder(IEnumerable<string> lst, string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             path = path.TrimEnd(Path.DirectorySeparatorChar);
             path = path.TrimEnd(Path.DirectorySeparatorChar);
 
 
@@ -356,10 +347,7 @@ namespace Emby.Server.Implementations.IO
 
 
         public void ReportFileSystemChanged(string path)
         public void ReportFileSystemChanged(string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             var monitorPath = !IgnorePatterns.ShouldIgnore(path);
             var monitorPath = !IgnorePatterns.ShouldIgnore(path);
 
 

+ 9 - 39
Emby.Server.Implementations/IO/ManagedFileSystem.cs

@@ -48,10 +48,7 @@ namespace Emby.Server.Implementations.IO
         /// <exception cref="ArgumentNullException"><paramref name="filename"/> is <c>null</c>.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="filename"/> is <c>null</c>.</exception>
         public virtual bool IsShortcut(string filename)
         public virtual bool IsShortcut(string filename)
         {
         {
-            if (string.IsNullOrEmpty(filename))
-            {
-                throw new ArgumentNullException(nameof(filename));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(filename);
 
 
             var extension = Path.GetExtension(filename);
             var extension = Path.GetExtension(filename);
             return _shortcutHandlers.Any(i => string.Equals(extension, i.Extension, StringComparison.OrdinalIgnoreCase));
             return _shortcutHandlers.Any(i => string.Equals(extension, i.Extension, StringComparison.OrdinalIgnoreCase));
@@ -65,10 +62,7 @@ namespace Emby.Server.Implementations.IO
         /// <exception cref="ArgumentNullException"><paramref name="filename"/> is <c>null</c>.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="filename"/> is <c>null</c>.</exception>
         public virtual string? ResolveShortcut(string filename)
         public virtual string? ResolveShortcut(string filename)
         {
         {
-            if (string.IsNullOrEmpty(filename))
-            {
-                throw new ArgumentNullException(nameof(filename));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(filename);
 
 
             var extension = Path.GetExtension(filename);
             var extension = Path.GetExtension(filename);
             var handler = _shortcutHandlers.Find(i => string.Equals(extension, i.Extension, StringComparison.OrdinalIgnoreCase));
             var handler = _shortcutHandlers.Find(i => string.Equals(extension, i.Extension, StringComparison.OrdinalIgnoreCase));
@@ -136,15 +130,8 @@ namespace Emby.Server.Implementations.IO
         /// <exception cref="ArgumentNullException">The shortcutPath or target is null.</exception>
         /// <exception cref="ArgumentNullException">The shortcutPath or target is null.</exception>
         public virtual void CreateShortcut(string shortcutPath, string target)
         public virtual void CreateShortcut(string shortcutPath, string target)
         {
         {
-            if (string.IsNullOrEmpty(shortcutPath))
-            {
-                throw new ArgumentNullException(nameof(shortcutPath));
-            }
-
-            if (string.IsNullOrEmpty(target))
-            {
-                throw new ArgumentNullException(nameof(target));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(shortcutPath);
+            ArgumentException.ThrowIfNullOrEmpty(target);
 
 
             var extension = Path.GetExtension(shortcutPath);
             var extension = Path.GetExtension(shortcutPath);
             var handler = _shortcutHandlers.Find(i => string.Equals(extension, i.Extension, StringComparison.OrdinalIgnoreCase));
             var handler = _shortcutHandlers.Find(i => string.Equals(extension, i.Extension, StringComparison.OrdinalIgnoreCase));
@@ -488,15 +475,8 @@ namespace Emby.Server.Implementations.IO
         /// <param name="file2">The file2.</param>
         /// <param name="file2">The file2.</param>
         public virtual void SwapFiles(string file1, string file2)
         public virtual void SwapFiles(string file1, string file2)
         {
         {
-            if (string.IsNullOrEmpty(file1))
-            {
-                throw new ArgumentNullException(nameof(file1));
-            }
-
-            if (string.IsNullOrEmpty(file2))
-            {
-                throw new ArgumentNullException(nameof(file2));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(file1);
+            ArgumentException.ThrowIfNullOrEmpty(file2);
 
 
             var temp1 = Path.Combine(_tempPath, Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture));
             var temp1 = Path.Combine(_tempPath, Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture));
 
 
@@ -514,15 +494,8 @@ namespace Emby.Server.Implementations.IO
         /// <inheritdoc />
         /// <inheritdoc />
         public virtual bool ContainsSubPath(string parentPath, string path)
         public virtual bool ContainsSubPath(string parentPath, string path)
         {
         {
-            if (string.IsNullOrEmpty(parentPath))
-            {
-                throw new ArgumentNullException(nameof(parentPath));
-            }
-
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(parentPath);
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             return path.Contains(
             return path.Contains(
                 Path.TrimEndingDirectorySeparator(parentPath) + Path.DirectorySeparatorChar,
                 Path.TrimEndingDirectorySeparator(parentPath) + Path.DirectorySeparatorChar,
@@ -532,10 +505,7 @@ namespace Emby.Server.Implementations.IO
         /// <inheritdoc />
         /// <inheritdoc />
         public virtual string NormalizePath(string path)
         public virtual string NormalizePath(string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             if (path.EndsWith(":\\", StringComparison.OrdinalIgnoreCase))
             if (path.EndsWith(":\\", StringComparison.OrdinalIgnoreCase))
             {
             {

+ 3 - 13
Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs

@@ -19,10 +19,7 @@ namespace Emby.Server.Implementations.IO
 
 
         public string? Resolve(string shortcutPath)
         public string? Resolve(string shortcutPath)
         {
         {
-            if (string.IsNullOrEmpty(shortcutPath))
-            {
-                throw new ArgumentException("Shortcut path is empty or null.", nameof(shortcutPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(shortcutPath);
 
 
             if (string.Equals(Path.GetExtension(shortcutPath), ".mblink", StringComparison.OrdinalIgnoreCase))
             if (string.Equals(Path.GetExtension(shortcutPath), ".mblink", StringComparison.OrdinalIgnoreCase))
             {
             {
@@ -36,15 +33,8 @@ namespace Emby.Server.Implementations.IO
 
 
         public void Create(string shortcutPath, string targetPath)
         public void Create(string shortcutPath, string targetPath)
         {
         {
-            if (string.IsNullOrEmpty(shortcutPath))
-            {
-                throw new ArgumentNullException(nameof(shortcutPath));
-            }
-
-            if (string.IsNullOrEmpty(targetPath))
-            {
-                throw new ArgumentNullException(nameof(targetPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(shortcutPath);
+            ArgumentException.ThrowIfNullOrEmpty(targetPath);
 
 
             File.WriteAllText(shortcutPath, targetPath);
             File.WriteAllText(shortcutPath, targetPath);
         }
         }

+ 4 - 17
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -495,11 +495,7 @@ namespace Emby.Server.Implementations.Library
 
 
         private Guid GetNewItemIdInternal(string key, Type type, bool forceCaseInsensitive)
         private Guid GetNewItemIdInternal(string key, Type type, bool forceCaseInsensitive)
         {
         {
-            if (string.IsNullOrEmpty(key))
-            {
-                throw new ArgumentNullException(nameof(key));
-            }
-
+            ArgumentException.ThrowIfNullOrEmpty(key);
             ArgumentNullException.ThrowIfNull(type);
             ArgumentNullException.ThrowIfNull(type);
 
 
             string programDataPath = _configurationManager.ApplicationPaths.ProgramDataPath;
             string programDataPath = _configurationManager.ApplicationPaths.ProgramDataPath;
@@ -818,10 +814,7 @@ namespace Emby.Server.Implementations.Library
         {
         {
             // If this returns multiple items it could be tricky figuring out which one is correct.
             // If this returns multiple items it could be tricky figuring out which one is correct.
             // In most cases, the newest one will be and the others obsolete but not yet cleaned up
             // In most cases, the newest one will be and the others obsolete but not yet cleaned up
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             var query = new InternalItemsQuery
             var query = new InternalItemsQuery
             {
             {
@@ -2340,10 +2333,7 @@ namespace Emby.Server.Implementations.Library
             string sortName,
             string sortName,
             string uniqueId)
             string uniqueId)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             var parentIdString = parentId.Equals(default)
             var parentIdString = parentId.Equals(default)
                 ? null
                 ? null
@@ -3125,10 +3115,7 @@ namespace Emby.Server.Implementations.Library
 
 
         public void RemoveMediaPath(string virtualFolderName, string mediaPath)
         public void RemoveMediaPath(string virtualFolderName, string mediaPath)
         {
         {
-            if (string.IsNullOrEmpty(mediaPath))
-            {
-                throw new ArgumentNullException(nameof(mediaPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(mediaPath);
 
 
             var rootFolderPath = _configurationManager.ApplicationPaths.DefaultUserViewsPath;
             var rootFolderPath = _configurationManager.ApplicationPaths.DefaultUserViewsPath;
             var virtualFolderPath = Path.Combine(rootFolderPath, virtualFolderName);
             var virtualFolderPath = Path.Combine(rootFolderPath, virtualFolderName);

+ 4 - 16
Emby.Server.Implementations/Library/MediaSourceManager.cs

@@ -762,10 +762,7 @@ namespace Emby.Server.Implementations.Library
 
 
         public Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> GetLiveStreamWithDirectStreamProvider(string id, CancellationToken cancellationToken)
         public Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> GetLiveStreamWithDirectStreamProvider(string id, CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(id))
-            {
-                throw new ArgumentNullException(nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
 
             // TODO probably shouldn't throw here but it is kept for "backwards compatibility"
             // TODO probably shouldn't throw here but it is kept for "backwards compatibility"
             var info = GetLiveStreamInfo(id) ?? throw new ResourceNotFoundException();
             var info = GetLiveStreamInfo(id) ?? throw new ResourceNotFoundException();
@@ -774,10 +771,7 @@ namespace Emby.Server.Implementations.Library
 
 
         public ILiveStream GetLiveStreamInfo(string id)
         public ILiveStream GetLiveStreamInfo(string id)
         {
         {
-            if (string.IsNullOrEmpty(id))
-            {
-                throw new ArgumentNullException(nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
 
             if (_openStreams.TryGetValue(id, out ILiveStream info))
             if (_openStreams.TryGetValue(id, out ILiveStream info))
             {
             {
@@ -801,10 +795,7 @@ namespace Emby.Server.Implementations.Library
 
 
         public async Task CloseLiveStream(string id)
         public async Task CloseLiveStream(string id)
         {
         {
-            if (string.IsNullOrEmpty(id))
-            {
-                throw new ArgumentNullException(nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
 
             await _liveStreamSemaphore.WaitAsync().ConfigureAwait(false);
             await _liveStreamSemaphore.WaitAsync().ConfigureAwait(false);
 
 
@@ -835,10 +826,7 @@ namespace Emby.Server.Implementations.Library
 
 
         private (IMediaSourceProvider MediaSourceProvider, string KeyId) GetProvider(string key)
         private (IMediaSourceProvider MediaSourceProvider, string KeyId) GetProvider(string key)
         {
         {
-            if (string.IsNullOrEmpty(key))
-            {
-                throw new ArgumentException("Key can't be empty.", nameof(key));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(key);
 
 
             var keys = key.Split(LiveStreamIdDelimeter, 2);
             var keys = key.Split(LiveStreamIdDelimeter, 2);
 
 

+ 1 - 4
Emby.Server.Implementations/Library/ResolverHelper.cs

@@ -25,10 +25,7 @@ namespace Emby.Server.Implementations.Library
         public static bool SetInitialItemValues(BaseItem item, Folder? parent, ILibraryManager libraryManager, IDirectoryService directoryService)
         public static bool SetInitialItemValues(BaseItem item, Folder? parent, ILibraryManager libraryManager, IDirectoryService directoryService)
         {
         {
             // This version of the below method has no ItemResolveArgs, so we have to require the path already being set
             // This version of the below method has no ItemResolveArgs, so we have to require the path already being set
-            if (string.IsNullOrEmpty(item.Path))
-            {
-                throw new ArgumentException("Item must have a Path");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(item.Path);
 
 
             // If the resolver didn't specify this
             // If the resolver didn't specify this
             if (parent is not null)
             if (parent is not null)

+ 1 - 4
Emby.Server.Implementations/Library/SearchEngine.cs

@@ -73,10 +73,7 @@ namespace Emby.Server.Implementations.Library
         {
         {
             var searchTerm = query.SearchTerm;
             var searchTerm = query.SearchTerm;
 
 
-            if (string.IsNullOrEmpty(searchTerm))
-            {
-                throw new ArgumentException("SearchTerm can't be empty.", nameof(query));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(searchTerm);
 
 
             searchTerm = searchTerm.Trim().RemoveDiacritics();
             searchTerm = searchTerm.Trim().RemoveDiacritics();
 
 

+ 1 - 4
Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs

@@ -16,10 +16,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
         /// <inheritdoc />
         /// <inheritdoc />
         public override void Add(SeriesTimerInfo item)
         public override void Add(SeriesTimerInfo item)
         {
         {
-            if (string.IsNullOrEmpty(item.Id))
-            {
-                throw new ArgumentException("SeriesTimerInfo.Id cannot be null or empty.");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(item.Id);
 
 
             base.Add(item);
             base.Add(item);
         }
         }

+ 1 - 4
Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs

@@ -74,10 +74,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
 
 
         public override void Add(TimerInfo item)
         public override void Add(TimerInfo item)
         {
         {
-            if (string.IsNullOrEmpty(item.Id))
-            {
-                throw new ArgumentException("TimerInfo.Id cannot be null or empty.");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(item.Id);
 
 
             base.Add(item);
             base.Add(item);
             AddOrUpdateSystemTimer(item);
             AddOrUpdateSystemTimer(item);

+ 10 - 42
Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs

@@ -74,10 +74,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
 
 
         public async Task<IEnumerable<ProgramInfo>> GetProgramsAsync(ListingsProviderInfo info, string channelId, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken)
         public async Task<IEnumerable<ProgramInfo>> GetProgramsAsync(ListingsProviderInfo info, string channelId, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(channelId);
 
 
             // Normalize incoming input
             // Normalize incoming input
             channelId = channelId.Replace(".json.schedulesdirect.org", string.Empty, StringComparison.OrdinalIgnoreCase).TrimStart('I');
             channelId = channelId.Replace(".json.schedulesdirect.org", string.Empty, StringComparison.OrdinalIgnoreCase).TrimStart('I');
@@ -670,15 +667,8 @@ namespace Emby.Server.Implementations.LiveTv.Listings
         {
         {
             var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
             var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
 
 
-            if (string.IsNullOrEmpty(token))
-            {
-                throw new ArgumentException("Authentication required.");
-            }
-
-            if (string.IsNullOrEmpty(info.ListingsId))
-            {
-                throw new ArgumentException("Listings Id required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(token);
+            ArgumentException.ThrowIfNullOrEmpty(info.ListingsId);
 
 
             _logger.LogInformation("Adding new LineUp ");
             _logger.LogInformation("Adding new LineUp ");
 
 
@@ -689,17 +679,11 @@ namespace Emby.Server.Implementations.LiveTv.Listings
 
 
         private async Task<bool> HasLineup(ListingsProviderInfo info, CancellationToken cancellationToken)
         private async Task<bool> HasLineup(ListingsProviderInfo info, CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(info.ListingsId))
-            {
-                throw new ArgumentException("Listings Id required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(info.ListingsId);
 
 
             var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
             var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
 
 
-            if (string.IsNullOrEmpty(token))
-            {
-                throw new ArgumentException("token required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(token);
 
 
             _logger.LogInformation("Headends on account ");
             _logger.LogInformation("Headends on account ");
 
 
@@ -732,23 +716,13 @@ namespace Emby.Server.Implementations.LiveTv.Listings
         {
         {
             if (validateLogin)
             if (validateLogin)
             {
             {
-                if (string.IsNullOrEmpty(info.Username))
-                {
-                    throw new ArgumentException("Username is required");
-                }
-
-                if (string.IsNullOrEmpty(info.Password))
-                {
-                    throw new ArgumentException("Password is required");
-                }
+                ArgumentException.ThrowIfNullOrEmpty(info.Username);
+                ArgumentException.ThrowIfNullOrEmpty(info.Password);
             }
             }
 
 
             if (validateListings)
             if (validateListings)
             {
             {
-                if (string.IsNullOrEmpty(info.ListingsId))
-                {
-                    throw new ArgumentException("Listings Id required");
-                }
+                ArgumentException.ThrowIfNullOrEmpty(info.ListingsId);
 
 
                 var hasLineup = await HasLineup(info, CancellationToken.None).ConfigureAwait(false);
                 var hasLineup = await HasLineup(info, CancellationToken.None).ConfigureAwait(false);
 
 
@@ -767,17 +741,11 @@ namespace Emby.Server.Implementations.LiveTv.Listings
         public async Task<List<ChannelInfo>> GetChannels(ListingsProviderInfo info, CancellationToken cancellationToken)
         public async Task<List<ChannelInfo>> GetChannels(ListingsProviderInfo info, CancellationToken cancellationToken)
         {
         {
             var listingsId = info.ListingsId;
             var listingsId = info.ListingsId;
-            if (string.IsNullOrEmpty(listingsId))
-            {
-                throw new ArgumentException("ListingsId required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(listingsId);
 
 
             var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
             var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
 
 
-            if (string.IsNullOrEmpty(token))
-            {
-                throw new ArgumentException("token required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(token);
 
 
             using var options = new HttpRequestMessage(HttpMethod.Get, ApiUrl + "/lineups/" + listingsId);
             using var options = new HttpRequestMessage(HttpMethod.Get, ApiUrl + "/lineups/" + listingsId);
             options.Headers.TryAddWithoutValidation("token", token);
             options.Headers.TryAddWithoutValidation("token", token);

+ 3 - 12
Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs

@@ -131,10 +131,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 
 
         public async Task<List<MediaSourceInfo>> GetChannelStreamMediaSources(string channelId, CancellationToken cancellationToken)
         public async Task<List<MediaSourceInfo>> GetChannelStreamMediaSources(string channelId, CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(channelId);
 
 
             if (IsValidChannelId(channelId))
             if (IsValidChannelId(channelId))
             {
             {
@@ -166,10 +163,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 
 
         public async Task<ILiveStream> GetChannelStream(string channelId, string streamId, List<ILiveStream> currentLiveStreams, CancellationToken cancellationToken)
         public async Task<ILiveStream> GetChannelStream(string channelId, string streamId, List<ILiveStream> currentLiveStreams, CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(channelId);
 
 
             if (!IsValidChannelId(channelId))
             if (!IsValidChannelId(channelId))
             {
             {
@@ -223,10 +217,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 
 
         protected virtual bool IsValidChannelId(string channelId)
         protected virtual bool IsValidChannelId(string channelId)
         {
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(channelId);
 
 
             return channelId.StartsWith(ChannelIdPrefix, StringComparison.OrdinalIgnoreCase);
             return channelId.StartsWith(ChannelIdPrefix, StringComparison.OrdinalIgnoreCase);
         }
         }

+ 3 - 12
Emby.Server.Implementations/Localization/LocalizationManager.cs

@@ -219,10 +219,7 @@ namespace Emby.Server.Implementations.Localization
         /// <inheritdoc />
         /// <inheritdoc />
         public int? GetRatingLevel(string rating)
         public int? GetRatingLevel(string rating)
         {
         {
-            if (string.IsNullOrEmpty(rating))
-            {
-                throw new ArgumentNullException(nameof(rating));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(rating);
 
 
             if (_unratedValues.Contains(rating.AsSpan(), StringComparison.OrdinalIgnoreCase))
             if (_unratedValues.Contains(rating.AsSpan(), StringComparison.OrdinalIgnoreCase))
             {
             {
@@ -295,10 +292,7 @@ namespace Emby.Server.Implementations.Localization
 
 
         private Dictionary<string, string> GetLocalizationDictionary(string culture)
         private Dictionary<string, string> GetLocalizationDictionary(string culture)
         {
         {
-            if (string.IsNullOrEmpty(culture))
-            {
-                throw new ArgumentNullException(nameof(culture));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(culture);
 
 
             const string Prefix = "Core";
             const string Prefix = "Core";
 
 
@@ -310,10 +304,7 @@ namespace Emby.Server.Implementations.Localization
 
 
         private async Task<Dictionary<string, string>> GetDictionary(string prefix, string culture, string baseFilename)
         private async Task<Dictionary<string, string>> GetDictionary(string prefix, string culture, string baseFilename)
         {
         {
-            if (string.IsNullOrEmpty(culture))
-            {
-                throw new ArgumentNullException(nameof(culture));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(culture);
 
 
             var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
             var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
 
 

+ 2 - 9
Emby.Server.Implementations/Playlists/PlaylistManager.cs

@@ -502,15 +502,8 @@ namespace Emby.Server.Implementations.Playlists
 
 
         private static string MakeRelativePath(string folderPath, string fileAbsolutePath)
         private static string MakeRelativePath(string folderPath, string fileAbsolutePath)
         {
         {
-            if (string.IsNullOrEmpty(folderPath))
-            {
-                throw new ArgumentException("Folder path was null or empty.", nameof(folderPath));
-            }
-
-            if (string.IsNullOrEmpty(fileAbsolutePath))
-            {
-                throw new ArgumentException("File absolute path was null or empty.", nameof(fileAbsolutePath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(folderPath);
+            ArgumentException.ThrowIfNullOrEmpty(fileAbsolutePath);
 
 
             if (!folderPath.EndsWith(Path.DirectorySeparatorChar))
             if (!folderPath.EndsWith(Path.DirectorySeparatorChar))
             {
             {

+ 1 - 4
Emby.Server.Implementations/Plugins/PluginManager.cs

@@ -210,10 +210,7 @@ namespace Emby.Server.Implementations.Plugins
         /// <param name="folder">Folder of the plugin.</param>
         /// <param name="folder">Folder of the plugin.</param>
         public void ImportPluginFrom(string folder)
         public void ImportPluginFrom(string folder)
         {
         {
-            if (string.IsNullOrEmpty(folder))
-            {
-                throw new ArgumentNullException(nameof(folder));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(folder);
 
 
             // Load the plugin.
             // Load the plugin.
             var plugin = LoadManifest(folder);
             var plugin = LoadManifest(folder);

+ 4 - 19
Emby.Server.Implementations/QuickConnect/QuickConnectManager.cs

@@ -71,25 +71,10 @@ namespace Emby.Server.Implementations.QuickConnect
         /// <inheritdoc/>
         /// <inheritdoc/>
         public QuickConnectResult TryConnect(AuthorizationInfo authorizationInfo)
         public QuickConnectResult TryConnect(AuthorizationInfo authorizationInfo)
         {
         {
-            if (string.IsNullOrEmpty(authorizationInfo.DeviceId))
-            {
-                throw new ArgumentException(nameof(authorizationInfo.DeviceId) + " is required");
-            }
-
-            if (string.IsNullOrEmpty(authorizationInfo.Device))
-            {
-                throw new ArgumentException(nameof(authorizationInfo.Device) + " is required");
-            }
-
-            if (string.IsNullOrEmpty(authorizationInfo.Client))
-            {
-                throw new ArgumentException(nameof(authorizationInfo.Client) + " is required");
-            }
-
-            if (string.IsNullOrEmpty(authorizationInfo.Version))
-            {
-                throw new ArgumentException(nameof(authorizationInfo.Version) + "is required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(authorizationInfo.DeviceId);
+            ArgumentException.ThrowIfNullOrEmpty(authorizationInfo.Device);
+            ArgumentException.ThrowIfNullOrEmpty(authorizationInfo.Client);
+            ArgumentException.ThrowIfNullOrEmpty(authorizationInfo.Version);
 
 
             AssertActive();
             AssertActive();
             ExpireRequests();
             ExpireRequests();

+ 6 - 26
Emby.Server.Implementations/Session/SessionManager.cs

@@ -264,20 +264,9 @@ namespace Emby.Server.Implementations.Session
         {
         {
             CheckDisposed();
             CheckDisposed();
 
 
-            if (string.IsNullOrEmpty(appName))
-            {
-                throw new ArgumentNullException(nameof(appName));
-            }
-
-            if (string.IsNullOrEmpty(appVersion))
-            {
-                throw new ArgumentNullException(nameof(appVersion));
-            }
-
-            if (string.IsNullOrEmpty(deviceId))
-            {
-                throw new ArgumentNullException(nameof(deviceId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(appName);
+            ArgumentException.ThrowIfNullOrEmpty(appVersion);
+            ArgumentException.ThrowIfNullOrEmpty(deviceId);
 
 
             var activityDate = DateTime.UtcNow;
             var activityDate = DateTime.UtcNow;
             var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false);
             var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false);
@@ -478,10 +467,7 @@ namespace Emby.Server.Implementations.Session
         {
         {
             CheckDisposed();
             CheckDisposed();
 
 
-            if (string.IsNullOrEmpty(deviceId))
-            {
-                throw new ArgumentNullException(nameof(deviceId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(deviceId);
 
 
             var key = GetSessionKey(appName, deviceId);
             var key = GetSessionKey(appName, deviceId);
 
 
@@ -1571,10 +1557,7 @@ namespace Emby.Server.Implementations.Session
         {
         {
             CheckDisposed();
             CheckDisposed();
 
 
-            if (string.IsNullOrEmpty(accessToken))
-            {
-                throw new ArgumentNullException(nameof(accessToken));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(accessToken);
 
 
             var existing = (await _deviceManager.GetDevices(
             var existing = (await _deviceManager.GetDevices(
                 new DeviceQuery
                 new DeviceQuery
@@ -1744,10 +1727,7 @@ namespace Emby.Server.Implementations.Session
         /// <inheritdoc />
         /// <inheritdoc />
         public void ReportNowViewingItem(string sessionId, string itemId)
         public void ReportNowViewingItem(string sessionId, string itemId)
         {
         {
-            if (string.IsNullOrEmpty(itemId))
-            {
-                throw new ArgumentNullException(nameof(itemId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(itemId);
 
 
             var item = _libraryManager.GetItemById(new Guid(itemId));
             var item = _libraryManager.GetItemById(new Guid(itemId));
             var session = GetSession(sessionId);
             var session = GetSession(sessionId);

+ 1 - 4
Jellyfin.Api/Controllers/SessionController.cs

@@ -294,10 +294,7 @@ namespace Jellyfin.Api.Controllers
         {
         {
             var currentSession = await RequestHelpers.GetSession(_sessionManager, _userManager, HttpContext).ConfigureAwait(false);
             var currentSession = await RequestHelpers.GetSession(_sessionManager, _userManager, HttpContext).ConfigureAwait(false);
 
 
-            if (command is null)
-            {
-                throw new ArgumentException("Request body may not be null");
-            }
+            ArgumentNullException.ThrowIfNull(command, "Request body may not be null");
 
 
             command.ControllingUserId = currentSession.UserId;
             command.ControllingUserId = currentSession.UserId;
 
 

+ 2 - 8
Jellyfin.Api/Helpers/TranscodingJobHelper.cs

@@ -136,10 +136,7 @@ namespace Jellyfin.Api.Helpers
         /// <exception cref="ArgumentNullException">Play session id is null.</exception>
         /// <exception cref="ArgumentNullException">Play session id is null.</exception>
         public void PingTranscodingJob(string playSessionId, bool? isUserPaused)
         public void PingTranscodingJob(string playSessionId, bool? isUserPaused)
         {
         {
-            if (string.IsNullOrEmpty(playSessionId))
-            {
-                throw new ArgumentNullException(nameof(playSessionId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(playSessionId);
 
 
             _logger.LogDebug("PingTranscodingJob PlaySessionId={0} isUsedPaused: {1}", playSessionId, isUserPaused);
             _logger.LogDebug("PingTranscodingJob PlaySessionId={0} isUsedPaused: {1}", playSessionId, isUserPaused);
 
 
@@ -522,10 +519,7 @@ namespace Jellyfin.Api.Helpers
                 }
                 }
             }
             }
 
 
-            if (string.IsNullOrEmpty(_mediaEncoder.EncoderPath))
-            {
-                throw new ArgumentException("FFmpeg path not set.");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(_mediaEncoder.EncoderPath);
 
 
             // If subtitles get burned in fonts may need to be extracted from the media file
             // If subtitles get burned in fonts may need to be extracted from the media file
             if (state.SubtitleStream is not null && state.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Encode)
             if (state.SubtitleStream is not null && state.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Encode)

+ 2 - 9
Jellyfin.Data/Entities/ActivityLog.cs

@@ -20,15 +20,8 @@ namespace Jellyfin.Data.Entities
         /// <param name="userId">The user id.</param>
         /// <param name="userId">The user id.</param>
         public ActivityLog(string name, string type, Guid userId)
         public ActivityLog(string name, string type, Guid userId)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
-
-            if (string.IsNullOrEmpty(type))
-            {
-                throw new ArgumentNullException(nameof(type));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
+            ArgumentException.ThrowIfNullOrEmpty(type);
 
 
             Name = name;
             Name = name;
             Type = type;
             Type = type;

+ 1 - 4
Jellyfin.Data/Entities/Group.cs

@@ -18,10 +18,7 @@ namespace Jellyfin.Data.Entities
         /// <param name="name">The name of the group.</param>
         /// <param name="name">The name of the group.</param>
         public Group(string name)
         public Group(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             Name = name;
             Name = name;
             Id = Guid.NewGuid();
             Id = Guid.NewGuid();

+ 1 - 4
Jellyfin.Data/Entities/Libraries/Artwork.cs

@@ -18,10 +18,7 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="kind">The kind of art.</param>
         /// <param name="kind">The kind of art.</param>
         public Artwork(string path, ArtKind kind)
         public Artwork(string path, ArtKind kind)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             Path = path;
             Path = path;
             Kind = kind;
             Kind = kind;

+ 1 - 4
Jellyfin.Data/Entities/Libraries/Chapter.cs

@@ -17,10 +17,7 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="startTime">The start time for this chapter.</param>
         /// <param name="startTime">The start time for this chapter.</param>
         public Chapter(string language, long startTime)
         public Chapter(string language, long startTime)
         {
         {
-            if (string.IsNullOrEmpty(language))
-            {
-                throw new ArgumentNullException(nameof(language));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(language);
 
 
             Language = language;
             Language = language;
             StartTime = startTime;
             StartTime = startTime;

+ 2 - 9
Jellyfin.Data/Entities/Libraries/ItemMetadata.cs

@@ -18,15 +18,8 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="language">ISO-639-3 3-character language codes.</param>
         /// <param name="language">ISO-639-3 3-character language codes.</param>
         protected ItemMetadata(string title, string language)
         protected ItemMetadata(string title, string language)
         {
         {
-            if (string.IsNullOrEmpty(title))
-            {
-                throw new ArgumentNullException(nameof(title));
-            }
-
-            if (string.IsNullOrEmpty(language))
-            {
-                throw new ArgumentNullException(nameof(language));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(title);
+            ArgumentException.ThrowIfNullOrEmpty(language);
 
 
             Title = title;
             Title = title;
             Language = language;
             Language = language;

+ 1 - 4
Jellyfin.Data/Entities/Libraries/MediaFile.cs

@@ -19,10 +19,7 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="kind">The file kind.</param>
         /// <param name="kind">The file kind.</param>
         public MediaFile(string path, MediaFileKind kind)
         public MediaFile(string path, MediaFileKind kind)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             Path = path;
             Path = path;
             Kind = kind;
             Kind = kind;

+ 1 - 4
Jellyfin.Data/Entities/Libraries/MetadataProvider.cs

@@ -16,10 +16,7 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="name">The name of the metadata provider.</param>
         /// <param name="name">The name of the metadata provider.</param>
         public MetadataProvider(string name)
         public MetadataProvider(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             Name = name;
             Name = name;
         }
         }

+ 1 - 4
Jellyfin.Data/Entities/Libraries/MetadataProviderId.cs

@@ -17,10 +17,7 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="metadataProvider">The metadata provider.</param>
         /// <param name="metadataProvider">The metadata provider.</param>
         public MetadataProviderId(string providerId, MetadataProvider metadataProvider)
         public MetadataProviderId(string providerId, MetadataProvider metadataProvider)
         {
         {
-            if (string.IsNullOrEmpty(providerId))
-            {
-                throw new ArgumentNullException(nameof(providerId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(providerId);
 
 
             ProviderId = providerId;
             ProviderId = providerId;
             MetadataProvider = metadataProvider;
             MetadataProvider = metadataProvider;

+ 1 - 4
Jellyfin.Data/Entities/Libraries/Person.cs

@@ -17,10 +17,7 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="name">The name of the person.</param>
         /// <param name="name">The name of the person.</param>
         public Person(string name)
         public Person(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             Name = name;
             Name = name;
             DateAdded = DateTime.UtcNow;
             DateAdded = DateTime.UtcNow;

+ 1 - 4
Jellyfin.Data/Entities/Libraries/Release.cs

@@ -17,10 +17,7 @@ namespace Jellyfin.Data.Entities.Libraries
         /// <param name="name">The name of this release.</param>
         /// <param name="name">The name of this release.</param>
         public Release(string name)
         public Release(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             Name = name;
             Name = name;
 
 

+ 3 - 14
Jellyfin.Data/Entities/User.cs

@@ -29,20 +29,9 @@ namespace Jellyfin.Data.Entities
         /// <param name="passwordResetProviderId">The Id of the user's password reset provider.</param>
         /// <param name="passwordResetProviderId">The Id of the user's password reset provider.</param>
         public User(string username, string authenticationProviderId, string passwordResetProviderId)
         public User(string username, string authenticationProviderId, string passwordResetProviderId)
         {
         {
-            if (string.IsNullOrEmpty(username))
-            {
-                throw new ArgumentNullException(nameof(username));
-            }
-
-            if (string.IsNullOrEmpty(authenticationProviderId))
-            {
-                throw new ArgumentNullException(nameof(authenticationProviderId));
-            }
-
-            if (string.IsNullOrEmpty(passwordResetProviderId))
-            {
-                throw new ArgumentNullException(nameof(passwordResetProviderId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(username);
+            ArgumentException.ThrowIfNullOrEmpty(authenticationProviderId);
+            ArgumentException.ThrowIfNullOrEmpty(passwordResetProviderId);
 
 
             Username = username;
             Username = username;
             AuthenticationProviderId = authenticationProviderId;
             AuthenticationProviderId = authenticationProviderId;

+ 3 - 15
Jellyfin.Drawing.Skia/SkiaEncoder.cs

@@ -145,12 +145,7 @@ namespace Jellyfin.Drawing.Skia
         /// <exception cref="SkiaCodecException">The file at the specified path could not be used to generate a codec.</exception>
         /// <exception cref="SkiaCodecException">The file at the specified path could not be used to generate a codec.</exception>
         public string GetImageBlurHash(int xComp, int yComp, string path)
         public string GetImageBlurHash(int xComp, int yComp, string path)
         {
         {
-            ArgumentNullException.ThrowIfNull(path);
-
-            if (path.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty", nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             var extension = Path.GetExtension(path.AsSpan()).TrimStart('.');
             var extension = Path.GetExtension(path.AsSpan()).TrimStart('.');
             if (!SupportedInputFormats.Contains(extension, StringComparison.OrdinalIgnoreCase))
             if (!SupportedInputFormats.Contains(extension, StringComparison.OrdinalIgnoreCase))
@@ -389,15 +384,8 @@ namespace Jellyfin.Drawing.Skia
         /// <inheritdoc/>
         /// <inheritdoc/>
         public string EncodeImage(string inputPath, DateTime dateModified, string outputPath, bool autoOrient, ImageOrientation? orientation, int quality, ImageProcessingOptions options, ImageFormat outputFormat)
         public string EncodeImage(string inputPath, DateTime dateModified, string outputPath, bool autoOrient, ImageOrientation? orientation, int quality, ImageProcessingOptions options, ImageFormat outputFormat)
         {
         {
-            if (inputPath.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty.", nameof(inputPath));
-            }
-
-            if (outputPath.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty.", nameof(outputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(inputPath);
+            ArgumentException.ThrowIfNullOrEmpty(outputPath);
 
 
             var inputFormat = Path.GetExtension(inputPath.AsSpan()).TrimStart('.');
             var inputFormat = Path.GetExtension(inputPath.AsSpan()).TrimStart('.');
             if (!SupportedInputFormats.Contains(inputFormat, StringComparison.OrdinalIgnoreCase))
             if (!SupportedInputFormats.Contains(inputFormat, StringComparison.OrdinalIgnoreCase))

+ 1 - 5
Jellyfin.Server.Implementations/Devices/DeviceManager.cs

@@ -222,11 +222,7 @@ namespace Jellyfin.Server.Implementations.Devices
         public bool CanAccessDevice(User user, string deviceId)
         public bool CanAccessDevice(User user, string deviceId)
         {
         {
             ArgumentNullException.ThrowIfNull(user);
             ArgumentNullException.ThrowIfNull(user);
-
-            if (string.IsNullOrEmpty(deviceId))
-            {
-                throw new ArgumentNullException(nameof(deviceId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(deviceId);
 
 
             if (user.HasPermission(PermissionKind.EnableAllDevices) || user.HasPermission(PermissionKind.IsAdministrator))
             if (user.HasPermission(PermissionKind.EnableAllDevices) || user.HasPermission(PermissionKind.IsAdministrator))
             {
             {

+ 2 - 8
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -1755,10 +1755,7 @@ namespace MediaBrowser.Controller.Entities
         /// <exception cref="ArgumentNullException">Throws if name is null.</exception>
         /// <exception cref="ArgumentNullException">Throws if name is null.</exception>
         public void AddStudio(string name)
         public void AddStudio(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             var current = Studios;
             var current = Studios;
 
 
@@ -1791,10 +1788,7 @@ namespace MediaBrowser.Controller.Entities
         /// <exception cref="ArgumentNullException">Throwns if name is null.</exception>
         /// <exception cref="ArgumentNullException">Throwns if name is null.</exception>
         public void AddGenre(string name)
         public void AddGenre(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             var genres = Genres;
             var genres = Genres;
             if (!genres.Contains(name, StringComparison.OrdinalIgnoreCase))
             if (!genres.Contains(name, StringComparison.OrdinalIgnoreCase))

+ 1 - 6
MediaBrowser.Controller/Entities/Extensions.cs

@@ -17,12 +17,7 @@ namespace MediaBrowser.Controller.Entities
         /// <param name="url">Trailer URL.</param>
         /// <param name="url">Trailer URL.</param>
         public static void AddTrailerUrl(this BaseItem item, string url)
         public static void AddTrailerUrl(this BaseItem item, string url)
         {
         {
-            ArgumentNullException.ThrowIfNull(url);
-
-            if (url.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty", nameof(url));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(url);
 
 
             var current = item.RemoteTrailers.FirstOrDefault(i => string.Equals(i.Url, url, StringComparison.OrdinalIgnoreCase));
             var current = item.RemoteTrailers.FirstOrDefault(i => string.Equals(i.Url, url, StringComparison.OrdinalIgnoreCase));
 
 

+ 1 - 5
MediaBrowser.Controller/Entities/PeopleHelper.cs

@@ -12,11 +12,7 @@ namespace MediaBrowser.Controller.Entities
         public static void AddPerson(List<PersonInfo> people, PersonInfo person)
         public static void AddPerson(List<PersonInfo> people, PersonInfo person)
         {
         {
             ArgumentNullException.ThrowIfNull(person);
             ArgumentNullException.ThrowIfNull(person);
-
-            if (string.IsNullOrEmpty(person.Name))
-            {
-                throw new ArgumentException("The person's name was empty or null.", nameof(person));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(person.Name);
 
 
             // Normalize
             // Normalize
             if (string.Equals(person.Role, PersonType.GuestStar, StringComparison.OrdinalIgnoreCase))
             if (string.Equals(person.Role, PersonType.GuestStar, StringComparison.OrdinalIgnoreCase))

+ 1 - 4
MediaBrowser.Controller/IO/FileData.cs

@@ -35,10 +35,7 @@ namespace MediaBrowser.Controller.IO
             int flattenFolderDepth = 0,
             int flattenFolderDepth = 0,
             bool resolveShortcuts = true)
             bool resolveShortcuts = true)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             ArgumentNullException.ThrowIfNull(args);
             ArgumentNullException.ThrowIfNull(args);
 
 

+ 3 - 12
MediaBrowser.Controller/Library/ItemResolveArgs.cs

@@ -171,10 +171,7 @@ namespace MediaBrowser.Controller.Library
         /// <exception cref="ArgumentNullException"><paramref name="path"/> is <c>null</c> or empty.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="path"/> is <c>null</c> or empty.</exception>
         public void AddAdditionalLocation(string path)
         public void AddAdditionalLocation(string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentException("The path was empty or null.", nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             AdditionalLocations ??= new List<string>();
             AdditionalLocations ??= new List<string>();
             AdditionalLocations.Add(path);
             AdditionalLocations.Add(path);
@@ -190,10 +187,7 @@ namespace MediaBrowser.Controller.Library
         /// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c> or empty.</exception>
         /// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c> or empty.</exception>
         public FileSystemMetadata GetFileSystemEntryByName(string name)
         public FileSystemMetadata GetFileSystemEntryByName(string name)
         {
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentException("The name was empty or null.", nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
 
             return GetFileSystemEntryByPath(System.IO.Path.Combine(Path, name));
             return GetFileSystemEntryByPath(System.IO.Path.Combine(Path, name));
         }
         }
@@ -206,10 +200,7 @@ namespace MediaBrowser.Controller.Library
         /// <exception cref="ArgumentNullException">Throws if path is invalid.</exception>
         /// <exception cref="ArgumentNullException">Throws if path is invalid.</exception>
         public FileSystemMetadata GetFileSystemEntryByPath(string path)
         public FileSystemMetadata GetFileSystemEntryByPath(string path)
         {
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentException("The path was empty or null.", nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
 
             foreach (var file in FileSystemChildren)
             foreach (var file in FileSystemChildren)
             {
             {

+ 1 - 5
MediaBrowser.LocalMetadata/Parsers/BaseItemXmlParser.cs

@@ -54,11 +54,7 @@ namespace MediaBrowser.LocalMetadata.Parsers
         public void Fetch(MetadataResult<T> item, string metadataFile, CancellationToken cancellationToken)
         public void Fetch(MetadataResult<T> item, string metadataFile, CancellationToken cancellationToken)
         {
         {
             ArgumentNullException.ThrowIfNull(item);
             ArgumentNullException.ThrowIfNull(item);
-
-            if (string.IsNullOrEmpty(metadataFile))
-            {
-                throw new ArgumentException("The metadata file was empty or null.", nameof(metadataFile));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(metadataFile);
 
 
             var settings = new XmlReaderSettings
             var settings = new XmlReaderSettings
             {
             {

+ 4 - 17
MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs

@@ -145,15 +145,8 @@ namespace MediaBrowser.MediaEncoding.Attachments
             bool isExternal,
             bool isExternal,
             CancellationToken cancellationToken)
             CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(inputPath))
-            {
-                throw new ArgumentNullException(nameof(inputPath));
-            }
-
-            if (string.IsNullOrEmpty(outputPath))
-            {
-                throw new ArgumentNullException(nameof(outputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(inputPath);
+            ArgumentException.ThrowIfNullOrEmpty(outputPath);
 
 
             Directory.CreateDirectory(outputPath);
             Directory.CreateDirectory(outputPath);
 
 
@@ -300,15 +293,9 @@ namespace MediaBrowser.MediaEncoding.Attachments
             string outputPath,
             string outputPath,
             CancellationToken cancellationToken)
             CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(inputPath))
-            {
-                throw new ArgumentNullException(nameof(inputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(inputPath);
 
 
-            if (string.IsNullOrEmpty(outputPath))
-            {
-                throw new ArgumentNullException(nameof(outputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(outputPath);
 
 
             Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
             Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
 
 

+ 1 - 4
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -637,10 +637,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
 
         private async Task<string> ExtractImageInternal(string inputPath, string container, MediaStream videoStream, int? imageStreamIndex, Video3DFormat? threedFormat, TimeSpan? offset, bool useIFrame, ImageFormat? targetFormat, CancellationToken cancellationToken)
         private async Task<string> ExtractImageInternal(string inputPath, string container, MediaStream videoStream, int? imageStreamIndex, Video3DFormat? threedFormat, TimeSpan? offset, bool useIFrame, ImageFormat? targetFormat, CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(inputPath))
-            {
-                throw new ArgumentNullException(nameof(inputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(inputPath);
 
 
             var outputExtension = targetFormat switch
             var outputExtension = targetFormat switch
             {
             {

+ 6 - 21
MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs

@@ -249,17 +249,14 @@ namespace MediaBrowser.MediaEncoding.Subtitles
 
 
         private bool TryGetWriter(string format, [NotNullWhen(true)] out ISubtitleWriter? value)
         private bool TryGetWriter(string format, [NotNullWhen(true)] out ISubtitleWriter? value)
         {
         {
+            ArgumentException.ThrowIfNullOrEmpty(format);
+
             if (string.Equals(format, SubtitleFormat.ASS, StringComparison.OrdinalIgnoreCase))
             if (string.Equals(format, SubtitleFormat.ASS, StringComparison.OrdinalIgnoreCase))
             {
             {
                 value = new AssWriter();
                 value = new AssWriter();
                 return true;
                 return true;
             }
             }
 
 
-            if (string.IsNullOrEmpty(format))
-            {
-                throw new ArgumentNullException(nameof(format));
-            }
-
             if (string.Equals(format, "json", StringComparison.OrdinalIgnoreCase))
             if (string.Equals(format, "json", StringComparison.OrdinalIgnoreCase))
             {
             {
                 value = new JsonWriter();
                 value = new JsonWriter();
@@ -355,15 +352,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
         private async Task ConvertTextSubtitleToSrtInternal(MediaStream subtitleStream, MediaSourceInfo mediaSource, string outputPath, CancellationToken cancellationToken)
         private async Task ConvertTextSubtitleToSrtInternal(MediaStream subtitleStream, MediaSourceInfo mediaSource, string outputPath, CancellationToken cancellationToken)
         {
         {
             var inputPath = subtitleStream.Path;
             var inputPath = subtitleStream.Path;
-            if (string.IsNullOrEmpty(inputPath))
-            {
-                throw new ArgumentNullException(nameof(inputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(inputPath);
 
 
-            if (string.IsNullOrEmpty(outputPath))
-            {
-                throw new ArgumentNullException(nameof(outputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(outputPath);
 
 
             Directory.CreateDirectory(Path.GetDirectoryName(outputPath) ?? throw new ArgumentException($"Provided path ({outputPath}) is not valid.", nameof(outputPath)));
             Directory.CreateDirectory(Path.GetDirectoryName(outputPath) ?? throw new ArgumentException($"Provided path ({outputPath}) is not valid.", nameof(outputPath)));
 
 
@@ -522,15 +513,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
             string outputPath,
             string outputPath,
             CancellationToken cancellationToken)
             CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(inputPath))
-            {
-                throw new ArgumentNullException(nameof(inputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(inputPath);
 
 
-            if (string.IsNullOrEmpty(outputPath))
-            {
-                throw new ArgumentNullException(nameof(outputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(outputPath);
 
 
             Directory.CreateDirectory(Path.GetDirectoryName(outputPath) ?? throw new ArgumentException($"Provided path ({outputPath}) is not valid.", nameof(outputPath)));
             Directory.CreateDirectory(Path.GetDirectoryName(outputPath) ?? throw new ArgumentException($"Provided path ({outputPath}) is not valid.", nameof(outputPath)));
 
 

+ 1 - 6
MediaBrowser.Model/Cryptography/PasswordHash.cs

@@ -29,12 +29,7 @@ namespace MediaBrowser.Model.Cryptography
 
 
         public PasswordHash(string id, byte[] hash, byte[] salt, Dictionary<string, string> parameters)
         public PasswordHash(string id, byte[] hash, byte[] salt, Dictionary<string, string> parameters)
         {
         {
-            ArgumentNullException.ThrowIfNull(id);
-
-            if (id.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty", nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
 
             Id = id;
             Id = id;
             _hash = hash;
             _hash = hash;

+ 1 - 4
MediaBrowser.Model/Dlna/SearchCriteria.cs

@@ -9,10 +9,7 @@ namespace MediaBrowser.Model.Dlna
     {
     {
         public SearchCriteria(string search)
         public SearchCriteria(string search)
         {
         {
-            if (search.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty.", nameof(search));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(search);
 
 
             SearchType = SearchType.Unknown;
             SearchType = SearchType.Unknown;
 
 

+ 1 - 4
MediaBrowser.Model/Dlna/StreamBuilder.cs

@@ -1496,10 +1496,7 @@ namespace MediaBrowser.Model.Dlna
                 throw new ArgumentException("ItemId is required");
                 throw new ArgumentException("ItemId is required");
             }
             }
 
 
-            if (string.IsNullOrEmpty(options.DeviceId))
-            {
-                throw new ArgumentException("DeviceId is required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(options.DeviceId);
 
 
             if (options.Profile is null)
             if (options.Profile is null)
             {
             {

+ 2 - 8
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -620,10 +620,7 @@ namespace MediaBrowser.Model.Dlna
 
 
         public string ToUrl(string baseUrl, string accessToken)
         public string ToUrl(string baseUrl, string accessToken)
         {
         {
-            if (string.IsNullOrEmpty(baseUrl))
-            {
-                throw new ArgumentNullException(nameof(baseUrl));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(baseUrl);
 
 
             var list = new List<string>();
             var list = new List<string>();
             foreach (NameValuePair pair in BuildParams(this, accessToken))
             foreach (NameValuePair pair in BuildParams(this, accessToken))
@@ -664,10 +661,7 @@ namespace MediaBrowser.Model.Dlna
 
 
         private string GetUrl(string baseUrl, string queryString)
         private string GetUrl(string baseUrl, string queryString)
         {
         {
-            if (string.IsNullOrEmpty(baseUrl))
-            {
-                throw new ArgumentNullException(nameof(baseUrl));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(baseUrl);
 
 
             string extension = string.IsNullOrEmpty(Container) ? string.Empty : "." + Container;
             string extension = string.IsNullOrEmpty(Container) ? string.Empty : "." + Container;
 
 

+ 2 - 8
MediaBrowser.Model/Net/MimeTypes.cs

@@ -140,10 +140,7 @@ namespace MediaBrowser.Model.Net
         [return: NotNullIfNotNull("defaultValue")]
         [return: NotNullIfNotNull("defaultValue")]
         public static string? GetMimeType(string filename, string? defaultValue = null)
         public static string? GetMimeType(string filename, string? defaultValue = null)
         {
         {
-            if (filename.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty.", nameof(filename));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(filename);
 
 
             var ext = Path.GetExtension(filename);
             var ext = Path.GetExtension(filename);
 
 
@@ -168,10 +165,7 @@ namespace MediaBrowser.Model.Net
 
 
         public static string? ToExtension(string mimeType)
         public static string? ToExtension(string mimeType)
         {
         {
-            if (mimeType.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty.", nameof(mimeType));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(mimeType);
 
 
             // handle text/html; charset=UTF-8
             // handle text/html; charset=UTF-8
             mimeType = mimeType.AsSpan().LeftPart(';').ToString();
             mimeType = mimeType.AsSpan().LeftPart(';').ToString();

+ 1 - 4
MediaBrowser.Providers/Manager/ImageSaver.cs

@@ -87,10 +87,7 @@ namespace MediaBrowser.Providers.Manager
 
 
         public async Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken)
         public async Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken)
         {
         {
-            if (string.IsNullOrEmpty(mimeType))
-            {
-                throw new ArgumentNullException(nameof(mimeType));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(mimeType);
 
 
             var saveLocally = item.SupportsLocalMetadata && item.IsSaveLocalMetadataEnabled() && !item.ExtraType.HasValue && item is not Audio;
             var saveLocally = item.SupportsLocalMetadata && item.IsSaveLocalMetadataEnabled() && !item.ExtraType.HasValue && item is not Audio;
 
 

+ 2 - 9
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -918,15 +918,8 @@ namespace MediaBrowser.Providers.Manager
             var source = sourceResult.Item;
             var source = sourceResult.Item;
             var target = targetResult.Item;
             var target = targetResult.Item;
 
 
-            if (source is null)
-            {
-                throw new ArgumentException("Item cannot be null.", nameof(sourceResult));
-            }
-
-            if (target is null)
-            {
-                throw new ArgumentException("Item cannot be null.", nameof(targetResult));
-            }
+            ArgumentNullException.ThrowIfNull(sourceResult);
+            ArgumentNullException.ThrowIfNull(targetResult);
 
 
             if (!lockedFields.Contains(MetadataField.Name))
             if (!lockedFields.Contains(MetadataField.Name))
             {
             {

+ 2 - 8
MediaBrowser.Providers/Plugins/Omdb/OmdbProvider.cs

@@ -365,10 +365,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 
 
         internal string GetDataFilePath(string imdbId)
         internal string GetDataFilePath(string imdbId)
         {
         {
-            if (string.IsNullOrEmpty(imdbId))
-            {
-                throw new ArgumentNullException(nameof(imdbId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(imdbId);
 
 
             var dataPath = Path.Combine(_configurationManager.ApplicationPaths.CachePath, "omdb");
             var dataPath = Path.Combine(_configurationManager.ApplicationPaths.CachePath, "omdb");
 
 
@@ -379,10 +376,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 
 
         internal string GetSeasonFilePath(string imdbId, int seasonId)
         internal string GetSeasonFilePath(string imdbId, int seasonId)
         {
         {
-            if (string.IsNullOrEmpty(imdbId))
-            {
-                throw new ArgumentNullException(nameof(imdbId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(imdbId);
 
 
             var dataPath = Path.Combine(_configurationManager.ApplicationPaths.CachePath, "omdb");
             var dataPath = Path.Combine(_configurationManager.ApplicationPaths.CachePath, "omdb");
 
 

+ 1 - 4
MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs

@@ -90,10 +90,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
                 throw new ArgumentException("Item can't be null.", nameof(item));
                 throw new ArgumentException("Item can't be null.", nameof(item));
             }
             }
 
 
-            if (string.IsNullOrEmpty(metadataFile))
-            {
-                throw new ArgumentException("The metadata filepath was empty.", nameof(metadataFile));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(metadataFile);
 
 
             _validProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
             _validProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);