瀏覽代碼

Use ArgumentException.ThrowIfNullOrEmpty

Bond_009 2 年之前
父節點
當前提交
b366dc2e6e
共有 58 個文件被更改,包括 130 次插入549 次删除
  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 />
         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));
 
@@ -371,10 +368,7 @@ namespace Emby.Dlna
         {
             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 path = Path.Combine(UserProfilesPath, newFilename);
@@ -387,15 +381,9 @@ namespace Emby.Dlna
         {
             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));
             if (current.Info.Type == DeviceProfileType.System)

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

@@ -1017,10 +1017,7 @@ namespace Emby.Dlna.PlayTo
             }
 
             var avService = GetServiceRenderingControl();
-            if (avService is null)
-            {
-                throw new ArgumentException("Device AvService is null");
-            }
+            ArgumentNullException.ThrowIfNull(avService);
 
             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)
             {
-                if (string.IsNullOrEmpty(url))
-                {
-                    throw new ArgumentNullException(nameof(url));
-                }
+                ArgumentException.ThrowIfNullOrEmpty(url);
 
                 var parts = url.Split('/');
 
@@ -962,10 +959,7 @@ namespace Emby.Dlna.PlayTo
 
             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
                 {

+ 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)
         {
-            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;
             _serverUdn = serverUdn;

+ 3 - 14
Emby.Drawing/ImageProcessor.cs

@@ -503,20 +503,9 @@ namespace Emby.Drawing
         /// </exception>
         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;
 

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

@@ -601,10 +601,7 @@ namespace Emby.Server.Implementations.Channels
 
         private Guid GetInternalChannelId(string name)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
             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));
             }
 
-            if (string.IsNullOrEmpty(key))
-            {
-                throw new ArgumentNullException(nameof(key));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(key);
 
             PersistUserData(userId, key, userData, cancellationToken);
         }
@@ -274,10 +271,7 @@ namespace Emby.Server.Implementations.Data
                 throw new ArgumentNullException(nameof(userId));
             }
 
-            if (string.IsNullOrEmpty(key))
-            {
-                throw new ArgumentNullException(nameof(key));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(key);
 
             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>
         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()
                 .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)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
             if (!_affectedPaths.Contains(path, StringComparer.Ordinal))
             {
@@ -53,10 +50,7 @@ namespace Emby.Server.Implementations.IO
 
         public void AddPath(string path)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
             lock (_timerLock)
             {

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

@@ -71,20 +71,14 @@ namespace Emby.Server.Implementations.IO
 
         public void ReportFileSystemChangeBeginning(string path)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
             TemporarilyIgnore(path);
         }
 
         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.
             // 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>
         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);
 
@@ -356,10 +347,7 @@ namespace Emby.Server.Implementations.IO
 
         public void ReportFileSystemChanged(string path)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(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>
         public virtual bool IsShortcut(string filename)
         {
-            if (string.IsNullOrEmpty(filename))
-            {
-                throw new ArgumentNullException(nameof(filename));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(filename);
 
             var extension = Path.GetExtension(filename);
             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>
         public virtual string? ResolveShortcut(string filename)
         {
-            if (string.IsNullOrEmpty(filename))
-            {
-                throw new ArgumentNullException(nameof(filename));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(filename);
 
             var extension = Path.GetExtension(filename);
             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>
         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 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>
         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));
 
@@ -514,15 +494,8 @@ namespace Emby.Server.Implementations.IO
         /// <inheritdoc />
         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(
                 Path.TrimEndingDirectorySeparator(parentPath) + Path.DirectorySeparatorChar,
@@ -532,10 +505,7 @@ namespace Emby.Server.Implementations.IO
         /// <inheritdoc />
         public virtual string NormalizePath(string path)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
             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)
         {
-            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))
             {
@@ -36,15 +33,8 @@ namespace Emby.Server.Implementations.IO
 
         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);
         }

+ 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)
         {
-            if (string.IsNullOrEmpty(key))
-            {
-                throw new ArgumentNullException(nameof(key));
-            }
-
+            ArgumentException.ThrowIfNullOrEmpty(key);
             ArgumentNullException.ThrowIfNull(type);
 
             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.
             // 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
             {
@@ -2340,10 +2333,7 @@ namespace Emby.Server.Implementations.Library
             string sortName,
             string uniqueId)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
             var parentIdString = parentId.Equals(default)
                 ? null
@@ -3125,10 +3115,7 @@ namespace Emby.Server.Implementations.Library
 
         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 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)
         {
-            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"
             var info = GetLiveStreamInfo(id) ?? throw new ResourceNotFoundException();
@@ -774,10 +771,7 @@ namespace Emby.Server.Implementations.Library
 
         public ILiveStream GetLiveStreamInfo(string id)
         {
-            if (string.IsNullOrEmpty(id))
-            {
-                throw new ArgumentNullException(nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
             if (_openStreams.TryGetValue(id, out ILiveStream info))
             {
@@ -801,10 +795,7 @@ namespace Emby.Server.Implementations.Library
 
         public async Task CloseLiveStream(string id)
         {
-            if (string.IsNullOrEmpty(id))
-            {
-                throw new ArgumentNullException(nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
             await _liveStreamSemaphore.WaitAsync().ConfigureAwait(false);
 
@@ -835,10 +826,7 @@ namespace Emby.Server.Implementations.Library
 
         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);
 

+ 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)
         {
             // 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 (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;
 
-            if (string.IsNullOrEmpty(searchTerm))
-            {
-                throw new ArgumentException("SearchTerm can't be empty.", nameof(query));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(searchTerm);
 
             searchTerm = searchTerm.Trim().RemoveDiacritics();
 

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

@@ -16,10 +16,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
         /// <inheritdoc />
         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);
         }

+ 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)
         {
-            if (string.IsNullOrEmpty(item.Id))
-            {
-                throw new ArgumentException("TimerInfo.Id cannot be null or empty.");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(item.Id);
 
             base.Add(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)
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(channelId);
 
             // Normalize incoming input
             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);
 
-            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 ");
 
@@ -689,17 +679,11 @@ namespace Emby.Server.Implementations.LiveTv.Listings
 
         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);
 
-            if (string.IsNullOrEmpty(token))
-            {
-                throw new ArgumentException("token required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(token);
 
             _logger.LogInformation("Headends on account ");
 
@@ -732,23 +716,13 @@ namespace Emby.Server.Implementations.LiveTv.Listings
         {
             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 (string.IsNullOrEmpty(info.ListingsId))
-                {
-                    throw new ArgumentException("Listings Id required");
-                }
+                ArgumentException.ThrowIfNullOrEmpty(info.ListingsId);
 
                 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)
         {
             var listingsId = info.ListingsId;
-            if (string.IsNullOrEmpty(listingsId))
-            {
-                throw new ArgumentException("ListingsId required");
-            }
+            ArgumentException.ThrowIfNullOrEmpty(listingsId);
 
             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);
             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)
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(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)
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(channelId);
 
             if (!IsValidChannelId(channelId))
             {
@@ -223,10 +217,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
 
         protected virtual bool IsValidChannelId(string channelId)
         {
-            if (string.IsNullOrEmpty(channelId))
-            {
-                throw new ArgumentNullException(nameof(channelId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(channelId);
 
             return channelId.StartsWith(ChannelIdPrefix, StringComparison.OrdinalIgnoreCase);
         }

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

@@ -219,10 +219,7 @@ namespace Emby.Server.Implementations.Localization
         /// <inheritdoc />
         public int? GetRatingLevel(string rating)
         {
-            if (string.IsNullOrEmpty(rating))
-            {
-                throw new ArgumentNullException(nameof(rating));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(rating);
 
             if (_unratedValues.Contains(rating.AsSpan(), StringComparison.OrdinalIgnoreCase))
             {
@@ -295,10 +292,7 @@ namespace Emby.Server.Implementations.Localization
 
         private Dictionary<string, string> GetLocalizationDictionary(string culture)
         {
-            if (string.IsNullOrEmpty(culture))
-            {
-                throw new ArgumentNullException(nameof(culture));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(culture);
 
             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)
         {
-            if (string.IsNullOrEmpty(culture))
-            {
-                throw new ArgumentNullException(nameof(culture));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(culture);
 
             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)
         {
-            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))
             {

+ 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>
         public void ImportPluginFrom(string folder)
         {
-            if (string.IsNullOrEmpty(folder))
-            {
-                throw new ArgumentNullException(nameof(folder));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(folder);
 
             // Load the plugin.
             var plugin = LoadManifest(folder);

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

@@ -71,25 +71,10 @@ namespace Emby.Server.Implementations.QuickConnect
         /// <inheritdoc/>
         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();
             ExpireRequests();

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

@@ -264,20 +264,9 @@ namespace Emby.Server.Implementations.Session
         {
             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 session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false);
@@ -478,10 +467,7 @@ namespace Emby.Server.Implementations.Session
         {
             CheckDisposed();
 
-            if (string.IsNullOrEmpty(deviceId))
-            {
-                throw new ArgumentNullException(nameof(deviceId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(deviceId);
 
             var key = GetSessionKey(appName, deviceId);
 
@@ -1571,10 +1557,7 @@ namespace Emby.Server.Implementations.Session
         {
             CheckDisposed();
 
-            if (string.IsNullOrEmpty(accessToken))
-            {
-                throw new ArgumentNullException(nameof(accessToken));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(accessToken);
 
             var existing = (await _deviceManager.GetDevices(
                 new DeviceQuery
@@ -1744,10 +1727,7 @@ namespace Emby.Server.Implementations.Session
         /// <inheritdoc />
         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 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);
 
-            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;
 

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

@@ -136,10 +136,7 @@ namespace Jellyfin.Api.Helpers
         /// <exception cref="ArgumentNullException">Play session id is null.</exception>
         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);
 
@@ -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 (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>
         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;
             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>
         public Group(string name)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
             Name = name;
             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>
         public Artwork(string path, ArtKind kind)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
             Path = path;
             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>
         public Chapter(string language, long startTime)
         {
-            if (string.IsNullOrEmpty(language))
-            {
-                throw new ArgumentNullException(nameof(language));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(language);
 
             Language = language;
             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>
         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;
             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>
         public MediaFile(string path, MediaFileKind kind)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
             Path = path;
             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>
         public MetadataProvider(string name)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(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>
         public MetadataProviderId(string providerId, MetadataProvider metadataProvider)
         {
-            if (string.IsNullOrEmpty(providerId))
-            {
-                throw new ArgumentNullException(nameof(providerId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(providerId);
 
             ProviderId = providerId;
             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>
         public Person(string name)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
             Name = name;
             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>
         public Release(string name)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(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>
         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;
             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>
         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('.');
             if (!SupportedInputFormats.Contains(extension, StringComparison.OrdinalIgnoreCase))
@@ -389,15 +384,8 @@ namespace Jellyfin.Drawing.Skia
         /// <inheritdoc/>
         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('.');
             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)
         {
             ArgumentNullException.ThrowIfNull(user);
-
-            if (string.IsNullOrEmpty(deviceId))
-            {
-                throw new ArgumentNullException(nameof(deviceId));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(deviceId);
 
             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>
         public void AddStudio(string name)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
             var current = Studios;
 
@@ -1791,10 +1788,7 @@ namespace MediaBrowser.Controller.Entities
         /// <exception cref="ArgumentNullException">Throwns if name is null.</exception>
         public void AddGenre(string name)
         {
-            if (string.IsNullOrEmpty(name))
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(name);
 
             var genres = Genres;
             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>
         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));
 

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

@@ -12,11 +12,7 @@ namespace MediaBrowser.Controller.Entities
         public static void AddPerson(List<PersonInfo> people, PersonInfo 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
             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,
             bool resolveShortcuts = true)
         {
-            if (string.IsNullOrEmpty(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(path);
 
             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>
         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.Add(path);
@@ -190,10 +187,7 @@ namespace MediaBrowser.Controller.Library
         /// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c> or empty.</exception>
         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));
         }
@@ -206,10 +200,7 @@ namespace MediaBrowser.Controller.Library
         /// <exception cref="ArgumentNullException">Throws if path is invalid.</exception>
         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)
             {

+ 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)
         {
             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
             {

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

@@ -145,15 +145,8 @@ namespace MediaBrowser.MediaEncoding.Attachments
             bool isExternal,
             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);
 
@@ -300,15 +293,9 @@ namespace MediaBrowser.MediaEncoding.Attachments
             string outputPath,
             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));
 

+ 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)
         {
-            if (string.IsNullOrEmpty(inputPath))
-            {
-                throw new ArgumentNullException(nameof(inputPath));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(inputPath);
 
             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)
         {
+            ArgumentException.ThrowIfNullOrEmpty(format);
+
             if (string.Equals(format, SubtitleFormat.ASS, StringComparison.OrdinalIgnoreCase))
             {
                 value = new AssWriter();
                 return true;
             }
 
-            if (string.IsNullOrEmpty(format))
-            {
-                throw new ArgumentNullException(nameof(format));
-            }
-
             if (string.Equals(format, "json", StringComparison.OrdinalIgnoreCase))
             {
                 value = new JsonWriter();
@@ -355,15 +352,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
         private async Task ConvertTextSubtitleToSrtInternal(MediaStream subtitleStream, MediaSourceInfo mediaSource, string outputPath, CancellationToken cancellationToken)
         {
             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)));
 
@@ -522,15 +513,9 @@ namespace MediaBrowser.MediaEncoding.Subtitles
             string outputPath,
             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)));
 

+ 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)
         {
-            ArgumentNullException.ThrowIfNull(id);
-
-            if (id.Length == 0)
-            {
-                throw new ArgumentException("String can't be empty", nameof(id));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(id);
 
             Id = id;
             _hash = hash;

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

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

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

@@ -1496,10 +1496,7 @@ namespace MediaBrowser.Model.Dlna
                 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)
             {

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

@@ -620,10 +620,7 @@ namespace MediaBrowser.Model.Dlna
 
         public string ToUrl(string baseUrl, string accessToken)
         {
-            if (string.IsNullOrEmpty(baseUrl))
-            {
-                throw new ArgumentNullException(nameof(baseUrl));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(baseUrl);
 
             var list = new List<string>();
             foreach (NameValuePair pair in BuildParams(this, accessToken))
@@ -664,10 +661,7 @@ namespace MediaBrowser.Model.Dlna
 
         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;
 

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

@@ -140,10 +140,7 @@ namespace MediaBrowser.Model.Net
         [return: NotNullIfNotNull("defaultValue")]
         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);
 
@@ -168,10 +165,7 @@ namespace MediaBrowser.Model.Net
 
         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
             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)
         {
-            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;
 

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

@@ -918,15 +918,8 @@ namespace MediaBrowser.Providers.Manager
             var source = sourceResult.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))
             {

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

@@ -365,10 +365,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 
         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");
 
@@ -379,10 +376,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
 
         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");
 

+ 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));
             }
 
-            if (string.IsNullOrEmpty(metadataFile))
-            {
-                throw new ArgumentException("The metadata filepath was empty.", nameof(metadataFile));
-            }
+            ArgumentException.ThrowIfNullOrEmpty(metadataFile);
 
             _validProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);