aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs6
-rw-r--r--Emby.Server.Implementations/AppBase/ConfigurationHelper.cs2
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs8
-rw-r--r--Emby.Server.Implementations/Channels/ChannelManager.cs33
-rw-r--r--Emby.Server.Implementations/Collections/CollectionImageProvider.cs6
-rw-r--r--Emby.Server.Implementations/Collections/CollectionManager.cs14
-rw-r--r--Emby.Server.Implementations/ConfigurationOptions.cs2
-rw-r--r--Emby.Server.Implementations/Cryptography/CryptographyProvider.cs38
-rw-r--r--Emby.Server.Implementations/Data/BaseSqliteRepository.cs2
-rw-r--r--Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs2
-rw-r--r--Emby.Server.Implementations/Data/SqliteExtensions.cs2
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs116
-rw-r--r--Emby.Server.Implementations/Data/SqliteUserDataRepository.cs10
-rw-r--r--Emby.Server.Implementations/Data/TypeMapper.cs7
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs82
-rw-r--r--Emby.Server.Implementations/Emby.Server.Implementations.csproj12
-rw-r--r--Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs10
-rw-r--r--Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs10
-rw-r--r--Emby.Server.Implementations/HttpServer/WebSocketConnection.cs4
-rw-r--r--Emby.Server.Implementations/IO/FileRefresher.cs22
-rw-r--r--Emby.Server.Implementations/IO/LibraryMonitor.cs22
-rw-r--r--Emby.Server.Implementations/IO/ManagedFileSystem.cs58
-rw-r--r--Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs16
-rw-r--r--Emby.Server.Implementations/IO/StreamHelper.cs2
-rw-r--r--Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs10
-rw-r--r--Emby.Server.Implementations/Images/DynamicImageProvider.cs6
-rw-r--r--Emby.Server.Implementations/Images/PlaylistImageProvider.cs6
-rw-r--r--Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs4
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs185
-rw-r--r--Emby.Server.Implementations/Library/LiveStreamHelper.cs8
-rw-r--r--Emby.Server.Implementations/Library/MediaSourceManager.cs50
-rw-r--r--Emby.Server.Implementations/Library/MediaStreamSelector.cs2
-rw-r--r--Emby.Server.Implementations/Library/ResolverHelper.cs15
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs10
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs4
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/ExtraResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/GenericFolderResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs20
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs12
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs6
-rw-r--r--Emby.Server.Implementations/Library/SearchEngine.cs5
-rw-r--r--Emby.Server.Implementations/Library/UserDataManager.cs2
-rw-r--r--Emby.Server.Implementations/Library/UserViewManager.cs10
-rw-r--r--Emby.Server.Implementations/Library/Validators/CollectionPostScanTask.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs82
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs4
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs5
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs7
-rw-r--r--Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs92
-rw-r--r--Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs6
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs46
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvManager.cs46
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs4
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs19
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs8
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs2
-rw-r--r--Emby.Server.Implementations/Localization/LocalizationManager.cs19
-rw-r--r--Emby.Server.Implementations/MediaEncoder/EncodingManager.cs2
-rw-r--r--Emby.Server.Implementations/Net/UdpSocket.cs4
-rw-r--r--Emby.Server.Implementations/Playlists/PlaylistManager.cs17
-rw-r--r--Emby.Server.Implementations/Playlists/PlaylistsFolder.cs2
-rw-r--r--Emby.Server.Implementations/Plugins/PluginManager.cs23
-rw-r--r--Emby.Server.Implementations/QuickConnect/QuickConnectManager.cs23
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs22
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/TaskManager.cs6
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/Tasks/ChapterImagesTask.cs2
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs4
-rw-r--r--Emby.Server.Implementations/Session/SessionManager.cs108
-rw-r--r--Emby.Server.Implementations/Session/SessionWebSocketListener.cs6
-rw-r--r--Emby.Server.Implementations/Session/WebSocketController.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs6
-rw-r--r--Emby.Server.Implementations/Sorting/DatePlayedComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/PlayCountComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/PremiereDateComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/ProductionYearComparer.cs2
-rw-r--r--Emby.Server.Implementations/SyncPlay/Group.cs6
-rw-r--r--Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs22
-rw-r--r--Emby.Server.Implementations/TV/TVSeriesManager.cs20
-rw-r--r--Emby.Server.Implementations/Updates/InstallationManager.cs26
85 files changed, 635 insertions, 873 deletions
diff --git a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
index 26b4649dd..985a127d5 100644
--- a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
+++ b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
@@ -131,7 +131,7 @@ namespace Emby.Server.Implementations.AppBase
{
_configuration = value;
- _configurationLoaded = value != null;
+ _configurationLoaded = value is not null;
}
}
@@ -144,7 +144,7 @@ namespace Emby.Server.Implementations.AppBase
{
IConfigurationFactory factory = Activator.CreateInstance<T>();
- if (_configurationFactories == null)
+ if (_configurationFactories is null)
{
_configurationFactories = new[] { factory };
}
@@ -306,7 +306,7 @@ namespace Emby.Server.Implementations.AppBase
configurationManager._configurationStores,
i => string.Equals(i.Key, k, StringComparison.OrdinalIgnoreCase));
- if (configurationInfo == null)
+ if (configurationInfo is null)
{
throw new ResourceNotFoundException("Configuration with key " + k + " not found.");
}
diff --git a/Emby.Server.Implementations/AppBase/ConfigurationHelper.cs b/Emby.Server.Implementations/AppBase/ConfigurationHelper.cs
index f923e59ef..1c8477605 100644
--- a/Emby.Server.Implementations/AppBase/ConfigurationHelper.cs
+++ b/Emby.Server.Implementations/AppBase/ConfigurationHelper.cs
@@ -43,7 +43,7 @@ namespace Emby.Server.Implementations.AppBase
Span<byte> newBytes = stream.GetBuffer().AsSpan(0, (int)stream.Length);
// If the file didn't exist before, or if something has changed, re-save
- if (buffer == null || !newBytes.SequenceEqual(buffer))
+ if (buffer is null || !newBytes.SequenceEqual(buffer))
{
var directory = Path.GetDirectoryName(path) ?? throw new ArgumentException($"Provided path ({path}) is not valid.", nameof(path));
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 8e4c13def..5db3748bf 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -196,7 +196,7 @@ namespace Emby.Server.Implementations
/// <summary>
/// Gets a value indicating whether this instance can self restart.
/// </summary>
- public bool CanSelfRestart => _startupOptions.RestartPath != null;
+ public bool CanSelfRestart => _startupOptions.RestartPath is not null;
public bool CoreStartupHasCompleted { get; private set; }
@@ -311,7 +311,7 @@ namespace Emby.Server.Implementations
public X509Certificate2 Certificate { get; private set; }
/// <inheritdoc/>
- public bool ListenWithHttps => Certificate != null && ConfigurationManager.GetNetworkConfiguration().EnableHttps;
+ public bool ListenWithHttps => Certificate is not null && ConfigurationManager.GetNetworkConfiguration().EnableHttps;
public string FriendlyName =>
string.IsNullOrEmpty(ConfigurationManager.Configuration.ServerName)
@@ -403,7 +403,7 @@ namespace Emby.Server.Implementations
// Convert to list so this isn't executed for each iteration
var parts = GetExportTypes<T>()
.Select(CreateInstanceSafe)
- .Where(i => i != null)
+ .Where(i => i is not null)
.Cast<T>()
.ToList();
@@ -424,7 +424,7 @@ namespace Emby.Server.Implementations
// Convert to list so this isn't executed for each iteration
var parts = GetExportTypes<T>()
.Select(i => defaultFunc(i))
- .Where(i => i != null)
+ .Where(i => i is not null)
.Cast<T>()
.ToList();
diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs
index 6837cce5c..85ccbc028 100644
--- a/Emby.Server.Implementations/Channels/ChannelManager.cs
+++ b/Emby.Server.Implementations/Channels/ChannelManager.cs
@@ -129,7 +129,7 @@ namespace Emby.Server.Implementations.Channels
public Task DeleteItem(BaseItem item)
{
var internalChannel = _libraryManager.GetItemById(item.ChannelId);
- if (internalChannel == null)
+ if (internalChannel is null)
{
throw new ArgumentException(nameof(item.ChannelId));
}
@@ -227,7 +227,7 @@ namespace Emby.Server.Implementations.Channels
.ToList();
}
- if (user != null)
+ if (user is not null)
{
channels = channels.Where(i =>
{
@@ -253,7 +253,7 @@ namespace Emby.Server.Implementations.Channels
if (query.StartIndex.HasValue || query.Limit.HasValue)
{
int startIndex = query.StartIndex ?? 0;
- int count = query.Limit == null ? totalCount - startIndex : Math.Min(query.Limit.Value, totalCount - startIndex);
+ int count = query.Limit is null ? totalCount - startIndex : Math.Min(query.Limit.Value, totalCount - startIndex);
all = all.GetRange(startIndex, count);
}
@@ -355,7 +355,7 @@ namespace Emby.Server.Implementations.Channels
{
var path = Path.Combine(item.GetInternalMetadataPath(), "channelmediasourceinfos.json");
- if (mediaSources == null || mediaSources.Count == 0)
+ if (mediaSources is null || mediaSources.Count == 0)
{
try
{
@@ -447,7 +447,7 @@ namespace Emby.Server.Implementations.Channels
var item = _libraryManager.GetItemById(id) as Channel;
- if (item == null)
+ if (item is null)
{
item = new Channel
{
@@ -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));
}
@@ -739,7 +736,7 @@ namespace Emby.Server.Implementations.Channels
query.GroupByPresentationUniqueKey = false;
// null if came from cache
- if (itemsResult != null)
+ if (itemsResult is not null)
{
var items = itemsResult.Items;
var itemsLen = items.Count;
@@ -761,7 +758,7 @@ namespace Emby.Server.Implementations.Channels
foreach (var deadId in deadIds)
{
var deadItem = _libraryManager.GetItemById(deadId);
- if (deadItem != null)
+ if (deadItem is not null)
{
_libraryManager.DeleteItem(
deadItem,
@@ -813,7 +810,7 @@ namespace Emby.Server.Implementations.Channels
{
await using FileStream jsonStream = AsyncFile.OpenRead(cachePath);
var cachedResult = await JsonSerializer.DeserializeAsync<ChannelItemResult>(jsonStream, _jsonOptions, cancellationToken).ConfigureAwait(false);
- if (cachedResult != null)
+ if (cachedResult is not null)
{
return null;
}
@@ -836,7 +833,7 @@ namespace Emby.Server.Implementations.Channels
{
await using FileStream jsonStream = AsyncFile.OpenRead(cachePath);
var cachedResult = await JsonSerializer.DeserializeAsync<ChannelItemResult>(jsonStream, _jsonOptions, cancellationToken).ConfigureAwait(false);
- if (cachedResult != null)
+ if (cachedResult is not null)
{
return null;
}
@@ -861,7 +858,7 @@ namespace Emby.Server.Implementations.Channels
var result = await channel.GetChannelItems(query, cancellationToken).ConfigureAwait(false);
- if (result == null)
+ if (result is null)
{
throw new InvalidOperationException("Channel returned a null result from GetChannelItems");
}
@@ -955,7 +952,7 @@ namespace Emby.Server.Implementations.Channels
_logger.LogError(ex, "Error retrieving channel item from database");
}
- if (item == null)
+ if (item is null)
{
item = new T();
isNew = true;
@@ -1156,7 +1153,7 @@ namespace Emby.Server.Implementations.Channels
{
_libraryManager.CreateItem(item, parentFolder);
- if (info.People != null && info.People.Count > 0)
+ if (info.People is not null && info.People.Count > 0)
{
_libraryManager.UpdatePeople(item, info.People);
}
@@ -1193,7 +1190,7 @@ namespace Emby.Server.Implementations.Channels
var result = GetAllChannels()
.FirstOrDefault(i => GetInternalChannelId(i.Name).Equals(channel.ChannelId) || string.Equals(i.Name, channel.Name, StringComparison.OrdinalIgnoreCase));
- if (result == null)
+ if (result is null)
{
throw new ResourceNotFoundException("No channel provider found for channel " + channel.Name);
}
@@ -1206,7 +1203,7 @@ namespace Emby.Server.Implementations.Channels
var result = GetAllChannels()
.FirstOrDefault(i => internalChannelId.Equals(GetInternalChannelId(i.Name)));
- if (result == null)
+ if (result is null)
{
throw new ResourceNotFoundException("No channel provider found for channel id " + internalChannelId);
}
diff --git a/Emby.Server.Implementations/Collections/CollectionImageProvider.cs b/Emby.Server.Implementations/Collections/CollectionImageProvider.cs
index ca8409402..c31bb4fb9 100644
--- a/Emby.Server.Implementations/Collections/CollectionImageProvider.cs
+++ b/Emby.Server.Implementations/Collections/CollectionImageProvider.cs
@@ -59,7 +59,7 @@ namespace Emby.Server.Implementations.Collections
var episode = subItem as Episode;
var series = episode?.Series;
- if (series != null && series.HasImage(ImageType.Primary))
+ if (series is not null && series.HasImage(ImageType.Primary))
{
return series;
}
@@ -71,7 +71,7 @@ namespace Emby.Server.Implementations.Collections
var parent = subItem.GetOwner() ?? subItem.GetParent();
- if (parent != null && parent.HasImage(ImageType.Primary))
+ if (parent is not null && parent.HasImage(ImageType.Primary))
{
if (parent is MusicAlbum)
{
@@ -81,7 +81,7 @@ namespace Emby.Server.Implementations.Collections
return null;
})
- .Where(i => i != null)
+ .Where(i => i is not null)
.GroupBy(x => x!.Id) // We removed the null values
.Select(x => x.First())
.ToList()!; // Again... the list doesn't contain any null values
diff --git a/Emby.Server.Implementations/Collections/CollectionManager.cs b/Emby.Server.Implementations/Collections/CollectionManager.cs
index 187e0c9b3..b53c8ca51 100644
--- a/Emby.Server.Implementations/Collections/CollectionManager.cs
+++ b/Emby.Server.Implementations/Collections/CollectionManager.cs
@@ -81,7 +81,7 @@ namespace Emby.Server.Implementations.Collections
internal async Task<Folder?> EnsureLibraryFolder(string path, bool createIfNeeded)
{
var existingFolder = FindFolders(path).FirstOrDefault();
- if (existingFolder != null)
+ if (existingFolder is not null)
{
return existingFolder;
}
@@ -121,7 +121,7 @@ namespace Emby.Server.Implementations.Collections
{
var folder = GetCollectionsFolder(false).GetAwaiter().GetResult();
- return folder == null
+ return folder is null
? Enumerable.Empty<BoxSet>()
: folder.GetChildren(user, true).OfType<BoxSet>();
}
@@ -138,7 +138,7 @@ namespace Emby.Server.Implementations.Collections
var parentFolder = await GetCollectionsFolder(true).ConfigureAwait(false);
- if (parentFolder == null)
+ if (parentFolder is null)
{
throw new ArgumentException(nameof(parentFolder));
}
@@ -216,7 +216,7 @@ namespace Emby.Server.Implementations.Collections
{
var item = _libraryManager.GetItemById(id);
- if (item == null)
+ if (item is null)
{
throw new ArgumentException("No item exists with the supplied Id");
}
@@ -265,9 +265,9 @@ namespace Emby.Server.Implementations.Collections
{
var childItem = _libraryManager.GetItemById(guidId);
- var child = collection.LinkedChildren.FirstOrDefault(i => (i.ItemId.HasValue && i.ItemId.Value.Equals(guidId)) || (childItem != null && string.Equals(childItem.Path, i.Path, StringComparison.OrdinalIgnoreCase)));
+ var child = collection.LinkedChildren.FirstOrDefault(i => (i.ItemId.HasValue && i.ItemId.Value.Equals(guidId)) || (childItem is not null && string.Equals(childItem.Path, i.Path, StringComparison.OrdinalIgnoreCase)));
- if (child == null)
+ if (child is null)
{
_logger.LogWarning("No collection title exists with the supplied Id");
continue;
@@ -275,7 +275,7 @@ namespace Emby.Server.Implementations.Collections
list.Add(child);
- if (childItem != null)
+ if (childItem is not null)
{
itemList.Add(childItem);
}
diff --git a/Emby.Server.Implementations/ConfigurationOptions.cs b/Emby.Server.Implementations/ConfigurationOptions.cs
index 01dc728c1..f0a4c8ffb 100644
--- a/Emby.Server.Implementations/ConfigurationOptions.cs
+++ b/Emby.Server.Implementations/ConfigurationOptions.cs
@@ -11,7 +11,7 @@ namespace Emby.Server.Implementations
/// <summary>
/// Gets a new copy of the default configuration options.
/// </summary>
- public static Dictionary<string, string> DefaultConfiguration => new Dictionary<string, string>
+ public static Dictionary<string, string?> DefaultConfiguration => new Dictionary<string, string?>
{
{ HostWebClientKey, bool.TrueString },
{ DefaultRedirectKey, "web/index.html" },
diff --git a/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
index e9c005cea..5380c45d8 100644
--- a/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
+++ b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
@@ -2,8 +2,6 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Security.Cryptography;
-using System.Text;
-using MediaBrowser.Common.Extensions;
using MediaBrowser.Model.Cryptography;
using static MediaBrowser.Model.Cryptography.Constants;
@@ -14,25 +12,6 @@ namespace Emby.Server.Implementations.Cryptography
/// </summary>
public class CryptographyProvider : ICryptoProvider
{
- // TODO: remove when not needed for backwards compat
- private static readonly HashSet<string> _supportedHashMethods = new HashSet<string>()
- {
- "MD5",
- "System.Security.Cryptography.MD5",
- "SHA",
- "SHA1",
- "System.Security.Cryptography.SHA1",
- "SHA256",
- "SHA-256",
- "System.Security.Cryptography.SHA256",
- "SHA384",
- "SHA-384",
- "System.Security.Cryptography.SHA384",
- "SHA512",
- "SHA-512",
- "System.Security.Cryptography.SHA512"
- };
-
/// <inheritdoc />
public string DefaultHashMethod => "PBKDF2-SHA512";
@@ -80,22 +59,7 @@ namespace Emby.Server.Implementations.Cryptography
DefaultOutputLength));
}
- if (!_supportedHashMethods.Contains(hash.Id))
- {
- throw new CryptographicException($"Requested hash method is not supported: {hash.Id}");
- }
-
- using var h = HashAlgorithm.Create(hash.Id) ?? throw new ResourceNotFoundException($"Unknown hash method: {hash.Id}.");
- var bytes = Encoding.UTF8.GetBytes(password.ToArray());
- if (hash.Salt.Length == 0)
- {
- return hash.Hash.SequenceEqual(h.ComputeHash(bytes));
- }
-
- byte[] salted = new byte[bytes.Length + hash.Salt.Length];
- Array.Copy(bytes, salted, bytes.Length);
- hash.Salt.CopyTo(salted.AsSpan(bytes.Length));
- return hash.Hash.SequenceEqual(h.ComputeHash(salted));
+ throw new NotSupportedException($"Can't verify hash with id: {hash.Id}");
}
/// <inheritdoc />
diff --git a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
index 450688491..ff9aa4c2a 100644
--- a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
+++ b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
@@ -101,7 +101,7 @@ namespace Emby.Server.Implementations.Data
protected ManagedConnection GetConnection(bool readOnly = false)
{
WriteLock.Wait();
- if (WriteConnection != null)
+ if (WriteConnection is not null)
{
return new ManagedConnection(WriteConnection, WriteLock);
}
diff --git a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
index 3de9d6371..4516b89dc 100644
--- a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
+++ b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
@@ -44,7 +44,7 @@ namespace Emby.Server.Implementations.Data
var item = _libraryManager.GetItemById(itemId);
- if (item != null)
+ if (item is not null)
{
_logger.LogInformation("Cleaning item {0} type: {1} path: {2}", item.Name, item.GetType().Name, item.Path ?? string.Empty);
diff --git a/Emby.Server.Implementations/Data/SqliteExtensions.cs b/Emby.Server.Implementations/Data/SqliteExtensions.cs
index 736b8125d..4055b0ba1 100644
--- a/Emby.Server.Implementations/Data/SqliteExtensions.cs
+++ b/Emby.Server.Implementations/Data/SqliteExtensions.cs
@@ -253,7 +253,7 @@ namespace Emby.Server.Implementations.Data
{
if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
- if (value == null)
+ if (value is null)
{
bindParam.BindNull();
}
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 9d44fd9d1..fa9d7dea2 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -691,7 +691,7 @@ namespace Emby.Server.Implementations.Data
private string GetPathToSave(string path)
{
- if (path == null)
+ if (path is null)
{
return null;
}
@@ -890,7 +890,7 @@ namespace Emby.Server.Implementations.Data
saveItemStatement.TryBind("@UnratedType", item.GetBlockUnratedType().ToString());
- if (topParent == null)
+ if (topParent is null)
{
saveItemStatement.TryBindNull("@TopParentId");
}
@@ -1146,7 +1146,7 @@ namespace Emby.Server.Implementations.Data
{
var image = ItemImageInfoFromValueString(part);
- if (image != null)
+ if (image is not null)
{
result[position++] = image;
}
@@ -1414,7 +1414,7 @@ namespace Emby.Server.Implementations.Data
var type = _typeMapper.GetType(typeString);
- if (type == null)
+ if (type is null)
{
return null;
}
@@ -1433,7 +1433,7 @@ namespace Emby.Server.Implementations.Data
}
}
- if (item == null)
+ if (item is null)
{
try
{
@@ -1444,7 +1444,7 @@ namespace Emby.Server.Implementations.Data
}
}
- if (item == null)
+ if (item is null)
{
return null;
}
@@ -1825,7 +1825,7 @@ namespace Emby.Server.Implementations.Data
var hasSeries = item as IHasSeries;
if (hasSeriesFields)
{
- if (hasSeries != null)
+ if (hasSeries is not null)
{
if (reader.TryGetGuid(index, out var seriesId))
{
@@ -1938,7 +1938,7 @@ namespace Emby.Server.Implementations.Data
if (HasField(query, ItemFields.SeriesPresentationUniqueKey))
{
- if (hasSeries != null)
+ if (hasSeries is not null)
{
if (reader.TryGetString(index, out var seriesPresentationUniqueKey))
{
@@ -2151,7 +2151,7 @@ namespace Emby.Server.Implementations.Data
private static bool EnableJoinUserData(InternalItemsQuery query)
{
- if (query.User == null)
+ if (query.User is null)
{
return false;
}
@@ -2205,7 +2205,7 @@ namespace Emby.Server.Implementations.Data
private bool HasProgramAttributes(InternalItemsQuery query)
{
- if (query.ParentType != null && _programExcludeParentTypes.Contains(query.ParentType.Value))
+ if (query.ParentType is not null && _programExcludeParentTypes.Contains(query.ParentType.Value))
{
return false;
}
@@ -2220,7 +2220,7 @@ namespace Emby.Server.Implementations.Data
private bool HasServiceName(InternalItemsQuery query)
{
- if (query.ParentType != null && _programExcludeParentTypes.Contains(query.ParentType.Value))
+ if (query.ParentType is not null && _programExcludeParentTypes.Contains(query.ParentType.Value))
{
return false;
}
@@ -2235,7 +2235,7 @@ namespace Emby.Server.Implementations.Data
private bool HasStartDate(InternalItemsQuery query)
{
- if (query.ParentType != null && _programExcludeParentTypes.Contains(query.ParentType.Value))
+ if (query.ParentType is not null && _programExcludeParentTypes.Contains(query.ParentType.Value))
{
return false;
}
@@ -2270,7 +2270,7 @@ namespace Emby.Server.Implementations.Data
private bool HasArtistFields(InternalItemsQuery query)
{
- if (query.ParentType != null && _artistExcludeParentTypes.Contains(query.ParentType.Value))
+ if (query.ParentType is not null && _artistExcludeParentTypes.Contains(query.ParentType.Value))
{
return false;
}
@@ -2392,7 +2392,7 @@ namespace Emby.Server.Implementations.Data
columns.Add("UserDatas.rating");
}
- if (query.SimilarTo != null)
+ if (query.SimilarTo is not null)
{
var item = query.SimilarTo;
@@ -2497,7 +2497,7 @@ namespace Emby.Server.Implementations.Data
{
var item = query.SimilarTo;
- if (item == null)
+ if (item is null)
{
return;
}
@@ -2681,7 +2681,7 @@ namespace Emby.Server.Implementations.Data
foreach (var row in statement.ExecuteQuery())
{
var item = GetItem(row, query, hasProgramAttributes, hasEpisodeAttributes, hasServiceName, hasStartDate, hasTrailerTypes, hasArtistFields, hasSeriesFields);
- if (item != null)
+ if (item is not null)
{
items.Add(item);
}
@@ -2923,7 +2923,7 @@ namespace Emby.Server.Implementations.Data
foreach (var row in statement.ExecuteQuery())
{
var item = GetItem(row, query, hasProgramAttributes, hasEpisodeAttributes, hasServiceName, hasStartDate, hasTrailerTypes, hasArtistFields, hasSeriesFields);
- if (item != null)
+ if (item is not null)
{
list.Add(item);
}
@@ -2966,7 +2966,7 @@ namespace Emby.Server.Implementations.Data
private string GetOrderByText(InternalItemsQuery query)
{
var orderBy = query.OrderBy;
- bool hasSimilar = query.SimilarTo != null;
+ bool hasSimilar = query.SimilarTo is not null;
bool hasSearch = !string.IsNullOrEmpty(query.SearchTerm);
if (hasSimilar || hasSearch)
@@ -3396,7 +3396,7 @@ namespace Emby.Server.Implementations.Data
}
}
- if (query.SimilarTo != null && query.MinSimilarityScore > 0)
+ if (query.SimilarTo is not null && query.MinSimilarityScore > 0)
{
whereClauses.Add("SimilarityScore > " + (query.MinSimilarityScore - 1).ToString(CultureInfo.InvariantCulture));
}
@@ -3683,7 +3683,7 @@ namespace Emby.Server.Implementations.Data
.Append(paramName)
.Append("))) OR ");
- if (statement != null)
+ if (statement is not null)
{
query.PersonIds[i].TryWriteBytes(idBytes);
statement.TryBind(paramName, idBytes);
@@ -3734,7 +3734,7 @@ namespace Emby.Server.Implementations.Data
if (!string.IsNullOrWhiteSpace(nameContains))
{
whereClauses.Add("(CleanName like @NameContains or OriginalTitle like @NameContains)");
- if (statement != null)
+ if (statement is not null)
{
nameContains = FixUnicodeChars(nameContains);
@@ -3865,7 +3865,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@ArtistIds" + index;
clauses.Add("(guid in (select itemid from ItemValues where CleanValue = (select CleanName from TypedBaseItems where guid=" + paramName + ") and Type<=1))");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, artistId);
}
@@ -3886,7 +3886,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@ArtistIds" + index;
clauses.Add("(guid in (select itemid from ItemValues where CleanValue = (select CleanName from TypedBaseItems where guid=" + paramName + ") and Type=1))");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, artistId);
}
@@ -3907,7 +3907,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@ArtistIds" + index;
clauses.Add("((select CleanName from TypedBaseItems where guid=" + paramName + ") in (select CleanValue from ItemValues where ItemId=Guid and Type=0) AND (select CleanName from TypedBaseItems where guid=" + paramName + ") not in (select CleanValue from ItemValues where ItemId=Guid and Type=1))");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, artistId);
}
@@ -3928,7 +3928,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@AlbumIds" + index;
clauses.Add("Album in (select Name from typedbaseitems where guid=" + paramName + ")");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, albumId);
}
@@ -3949,7 +3949,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@ExcludeArtistId" + index;
clauses.Add("(guid not in (select itemid from ItemValues where CleanValue = (select CleanName from TypedBaseItems where guid=" + paramName + ") and Type<=1))");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, artistId);
}
@@ -3970,7 +3970,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@GenreId" + index;
clauses.Add("(guid in (select itemid from ItemValues where CleanValue = (select CleanName from TypedBaseItems where guid=" + paramName + ") and Type=2))");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, genreId);
}
@@ -3989,7 +3989,7 @@ namespace Emby.Server.Implementations.Data
foreach (var item in query.Genres)
{
clauses.Add("@Genre" + index + " in (select CleanValue from ItemValues where ItemId=Guid and Type=2)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@Genre" + index, GetCleanValue(item));
}
@@ -4008,7 +4008,7 @@ namespace Emby.Server.Implementations.Data
foreach (var item in tags)
{
clauses.Add("@Tag" + index + " in (select CleanValue from ItemValues where ItemId=Guid and Type=4)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@Tag" + index, GetCleanValue(item));
}
@@ -4027,7 +4027,7 @@ namespace Emby.Server.Implementations.Data
foreach (var item in excludeTags)
{
clauses.Add("@ExcludeTag" + index + " not in (select CleanValue from ItemValues where ItemId=Guid and Type=4)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@ExcludeTag" + index, GetCleanValue(item));
}
@@ -4049,7 +4049,7 @@ namespace Emby.Server.Implementations.Data
clauses.Add("(guid in (select itemid from ItemValues where CleanValue = (select CleanName from TypedBaseItems where guid=" + paramName + ") and Type=3))");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, studioId);
}
@@ -4068,7 +4068,7 @@ namespace Emby.Server.Implementations.Data
foreach (var item in query.OfficialRatings)
{
clauses.Add("OfficialRating=@OfficialRating" + index);
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@OfficialRating" + index, item);
}
@@ -4083,7 +4083,7 @@ namespace Emby.Server.Implementations.Data
if (query.MinParentalRating.HasValue)
{
whereClauses.Add("InheritedParentalRatingValue>=@MinParentalRating");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@MinParentalRating", query.MinParentalRating.Value);
}
@@ -4092,7 +4092,7 @@ namespace Emby.Server.Implementations.Data
if (query.MaxParentalRating.HasValue)
{
whereClauses.Add("InheritedParentalRatingValue<=@MaxParentalRating");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@MaxParentalRating", query.MaxParentalRating.Value);
}
@@ -4149,7 +4149,7 @@ namespace Emby.Server.Implementations.Data
if (!string.IsNullOrWhiteSpace(query.HasNoAudioTrackWithLanguage))
{
whereClauses.Add("((select language from MediaStreams where MediaStreams.ItemId=A.Guid and MediaStreams.StreamType='Audio' and MediaStreams.Language=@HasNoAudioTrackWithLanguage limit 1) is null)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@HasNoAudioTrackWithLanguage", query.HasNoAudioTrackWithLanguage);
}
@@ -4158,7 +4158,7 @@ namespace Emby.Server.Implementations.Data
if (!string.IsNullOrWhiteSpace(query.HasNoInternalSubtitleTrackWithLanguage))
{
whereClauses.Add("((select language from MediaStreams where MediaStreams.ItemId=A.Guid and MediaStreams.StreamType='Subtitle' and MediaStreams.IsExternal=0 and MediaStreams.Language=@HasNoInternalSubtitleTrackWithLanguage limit 1) is null)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@HasNoInternalSubtitleTrackWithLanguage", query.HasNoInternalSubtitleTrackWithLanguage);
}
@@ -4167,7 +4167,7 @@ namespace Emby.Server.Implementations.Data
if (!string.IsNullOrWhiteSpace(query.HasNoExternalSubtitleTrackWithLanguage))
{
whereClauses.Add("((select language from MediaStreams where MediaStreams.ItemId=A.Guid and MediaStreams.StreamType='Subtitle' and MediaStreams.IsExternal=1 and MediaStreams.Language=@HasNoExternalSubtitleTrackWithLanguage limit 1) is null)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@HasNoExternalSubtitleTrackWithLanguage", query.HasNoExternalSubtitleTrackWithLanguage);
}
@@ -4176,7 +4176,7 @@ namespace Emby.Server.Implementations.Data
if (!string.IsNullOrWhiteSpace(query.HasNoSubtitleTrackWithLanguage))
{
whereClauses.Add("((select language from MediaStreams where MediaStreams.ItemId=A.Guid and MediaStreams.StreamType='Subtitle' and MediaStreams.Language=@HasNoSubtitleTrackWithLanguage limit 1) is null)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@HasNoSubtitleTrackWithLanguage", query.HasNoSubtitleTrackWithLanguage);
}
@@ -4229,7 +4229,7 @@ namespace Emby.Server.Implementations.Data
if (query.Years.Length == 1)
{
whereClauses.Add("ProductionYear=@Years");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@Years", query.Years[0].ToString(CultureInfo.InvariantCulture));
}
@@ -4245,7 +4245,7 @@ namespace Emby.Server.Implementations.Data
if (isVirtualItem.HasValue)
{
whereClauses.Add("IsVirtualItem=@IsVirtualItem");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@IsVirtualItem", isVirtualItem.Value);
}
@@ -4279,7 +4279,7 @@ namespace Emby.Server.Implementations.Data
if (queryMediaTypes.Length == 1)
{
whereClauses.Add("MediaType=@MediaTypes");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@MediaTypes", queryMediaTypes[0]);
}
@@ -4299,7 +4299,7 @@ namespace Emby.Server.Implementations.Data
foreach (var id in query.ItemIds)
{
includeIds.Add("Guid = @IncludeId" + index);
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@IncludeId" + index, id);
}
@@ -4318,7 +4318,7 @@ namespace Emby.Server.Implementations.Data
foreach (var id in query.ExcludeItemIds)
{
excludeIds.Add("Guid <> @ExcludeId" + index);
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@ExcludeId" + index, id);
}
@@ -4329,7 +4329,7 @@ namespace Emby.Server.Implementations.Data
whereClauses.Add(string.Join(" AND ", excludeIds));
}
- if (query.ExcludeProviderIds != null && query.ExcludeProviderIds.Count > 0)
+ if (query.ExcludeProviderIds is not null && query.ExcludeProviderIds.Count > 0)
{
var excludeIds = new List<string>();
@@ -4343,7 +4343,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@ExcludeProviderId" + index;
excludeIds.Add("(ProviderIds is null or ProviderIds not like " + paramName + ")");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, "%" + pair.Key + "=" + pair.Value + "%");
}
@@ -4359,7 +4359,7 @@ namespace Emby.Server.Implementations.Data
}
}
- if (query.HasAnyProviderId != null && query.HasAnyProviderId.Count > 0)
+ if (query.HasAnyProviderId is not null && query.HasAnyProviderId.Count > 0)
{
var hasProviderIds = new List<string>();
@@ -4386,7 +4386,7 @@ namespace Emby.Server.Implementations.Data
hasProviderIds.Add("ProviderIds like " + paramName);
// this replaces the placeholder with a value, here: %key=val%
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind(paramName, "%" + pair.Key + "=" + pair.Value + "%");
}
@@ -4468,7 +4468,7 @@ namespace Emby.Server.Implementations.Data
{
whereClauses.Add("Guid in (select itemId from AncestorIds where AncestorId=@AncestorId)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@AncestorId", query.AncestorIds[0]);
}
@@ -4484,7 +4484,7 @@ namespace Emby.Server.Implementations.Data
{
var inClause = "select guid from TypedBaseItems where PresentationUniqueKey=@AncestorWithPresentationUniqueKey";
whereClauses.Add(string.Format(CultureInfo.InvariantCulture, "Guid in (select itemId from AncestorIds where AncestorId in ({0}))", inClause));
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@AncestorWithPresentationUniqueKey", query.AncestorWithPresentationUniqueKey);
}
@@ -4494,7 +4494,7 @@ namespace Emby.Server.Implementations.Data
{
whereClauses.Add("SeriesPresentationUniqueKey=@SeriesPresentationUniqueKey");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@SeriesPresentationUniqueKey", query.SeriesPresentationUniqueKey);
}
@@ -4503,7 +4503,7 @@ namespace Emby.Server.Implementations.Data
if (query.BlockUnratedItems.Length == 1)
{
whereClauses.Add("(InheritedParentalRatingValue > 0 or UnratedType <> @UnratedType)");
- if (statement != null)
+ if (statement is not null)
{
statement.TryBind("@UnratedType", query.BlockUnratedItems[0].ToString());
}
@@ -4522,7 +4522,7 @@ namespace Emby.Server.Implementations.Data
if (query.ExcludeInheritedTags.Length > 0)
{
var paramName = "@ExcludeInheritedTags";
- if (statement == null)
+ if (statement is null)
{
int index = 0;
string excludedTags = string.Join(',', query.ExcludeInheritedTags.Select(_ => paramName + index++));
@@ -4732,7 +4732,7 @@ namespace Emby.Server.Implementations.Data
return false;
}
- if (query.User == null)
+ if (query.User is null)
{
return false;
}
@@ -4916,7 +4916,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
{
var whereClauses = new List<string>();
- if (query.User != null && query.IsFavorite.HasValue)
+ if (query.User is not null && query.IsFavorite.HasValue)
{
whereClauses.Add(@"p.Name IN (
SELECT Name FROM TypedBaseItems WHERE UserDataKey IN (
@@ -5293,7 +5293,7 @@ AND Type = @InternalPersonType)");
.Append(" group by PresentationUniqueKey");
if (query.OrderBy.Count != 0
- || query.SimilarTo != null
+ || query.SimilarTo is not null
|| !string.IsNullOrEmpty(query.SearchTerm))
{
stringBuilder.Append(GetOrderByText(query));
@@ -5361,7 +5361,7 @@ AND Type = @InternalPersonType)");
statement.TryBind("@UserId", query.User.InternalId);
}
- if (typeSubQuery != null)
+ if (typeSubQuery is not null)
{
GetWhereClauses(typeSubQuery, null);
}
@@ -5382,7 +5382,7 @@ AND Type = @InternalPersonType)");
foreach (var row in statement.ExecuteQuery())
{
var item = GetItem(row, query, hasProgramAttributes, hasEpisodeAttributes, hasServiceName, hasStartDate, hasTrailerTypes, hasArtistFields, hasSeriesFields);
- if (item != null)
+ if (item is not null)
{
var countStartColumn = columns.Count - 1;
@@ -5402,7 +5402,7 @@ AND Type = @InternalPersonType)");
statement.TryBind("@UserId", query.User.InternalId);
}
- if (typeSubQuery != null)
+ if (typeSubQuery is not null)
{
GetWhereClauses(typeSubQuery, null);
}
diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
index 8d78d644d..5f2c3c9dc 100644
--- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
+++ b/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))
{
diff --git a/Emby.Server.Implementations/Data/TypeMapper.cs b/Emby.Server.Implementations/Data/TypeMapper.cs
index 064664e1f..9efcea842 100644
--- a/Emby.Server.Implementations/Data/TypeMapper.cs
+++ b/Emby.Server.Implementations/Data/TypeMapper.cs
@@ -23,14 +23,11 @@ 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))
- .FirstOrDefault(t => t != null));
+ .FirstOrDefault(t => t is not null));
}
}
}
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index f6d37421a..0c6c31982 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -213,7 +213,7 @@ namespace Emby.Server.Implementations.Dto
dto.DisplayPreferencesId = item.DisplayPreferencesId.ToString("N", CultureInfo.InvariantCulture);
}
- if (user != null)
+ if (user is not null)
{
AttachUserSpecificInfo(dto, item, user, options);
}
@@ -235,14 +235,14 @@ namespace Emby.Server.Implementations.Dto
if (options.ContainsField(ItemFields.CanDelete))
{
- dto.CanDelete = user == null
+ dto.CanDelete = user is null
? item.CanDelete()
: item.CanDelete(user);
}
if (options.ContainsField(ItemFields.CanDownload))
{
- dto.CanDownload = user == null
+ dto.CanDownload = user is null
? item.CanDownload()
: item.CanDownload(user);
}
@@ -254,7 +254,7 @@ namespace Emby.Server.Implementations.Dto
var liveTvManager = LivetvManager;
var activeRecording = liveTvManager.GetActiveRecordingInfo(item.Path);
- if (activeRecording != null)
+ if (activeRecording is not null)
{
dto.Type = BaseItemKind.Recording;
dto.CanDownload = false;
@@ -317,7 +317,7 @@ namespace Emby.Server.Implementations.Dto
{
var dto = GetBaseItemDtoInternal(item, options, user);
- if (taggedItems != null && options.ContainsField(ItemFields.ItemCounts))
+ if (taggedItems is not null && options.ContainsField(ItemFields.ItemCounts))
{
SetItemByNameInfo(item, dto, taggedItems);
}
@@ -417,7 +417,7 @@ namespace Emby.Server.Implementations.Dto
if (options.ContainsField(ItemFields.BasicSyncInfo))
{
- var userCanSync = user != null && user.HasPermission(PermissionKind.EnableContentDownloading);
+ var userCanSync = user is not null && user.HasPermission(PermissionKind.EnableContentDownloading);
if (userCanSync && item.SupportsExternalTransfer)
{
dto.SupportsSync = true;
@@ -460,7 +460,7 @@ namespace Emby.Server.Implementations.Dto
var album = item.AlbumEntity;
- if (album != null)
+ if (album is not null)
{
dto.Album = album.Name;
dto.AlbumId = album.Id;
@@ -491,7 +491,7 @@ namespace Emby.Server.Implementations.Dto
{
return images
.Select(p => GetImageCacheTag(item, p))
- .Where(i => i != null)
+ .Where(i => i is not null)
.ToArray();
}
@@ -570,8 +570,8 @@ namespace Emby.Server.Implementations.Dto
_logger.LogError(ex, "Error getting person {Name}", c);
return null;
}
- }).Where(i => i != null)
- .Where(i => user == null ?
+ }).Where(i => i is not null)
+ .Where(i => user is null ?
true :
i.IsVisible(user))
.GroupBy(i => i.Name, StringComparer.OrdinalIgnoreCase)
@@ -593,13 +593,13 @@ namespace Emby.Server.Implementations.Dto
{
baseItemPerson.PrimaryImageTag = GetTagAndFillBlurhash(dto, entity, ImageType.Primary);
baseItemPerson.Id = entity.Id;
- if (dto.ImageBlurHashes != null)
+ if (dto.ImageBlurHashes is not null)
{
// Only add BlurHash for the person's image.
baseItemPerson.ImageBlurHashes = new Dictionary<ImageType, Dictionary<string, string>>();
foreach (var (imageType, blurHash) in dto.ImageBlurHashes)
{
- if (blurHash != null)
+ if (blurHash is not null)
{
baseItemPerson.ImageBlurHashes[imageType] = new Dictionary<string, string>();
foreach (var (imageId, blurHashValue) in blurHash)
@@ -662,7 +662,7 @@ namespace Emby.Server.Implementations.Dto
private string GetTagAndFillBlurhash(BaseItemDto dto, BaseItem item, ImageType imageType, int imageIndex = 0)
{
var image = item.GetImageInfo(imageType, imageIndex);
- if (image != null)
+ if (image is not null)
{
return GetTagAndFillBlurhash(dto, item, image);
}
@@ -782,7 +782,7 @@ namespace Emby.Server.Implementations.Dto
{
var tag = GetTagAndFillBlurhash(dto, item, image);
- if (tag != null)
+ if (tag is not null)
{
dto.ImageTags[image.Type] = tag;
}
@@ -917,7 +917,7 @@ namespace Emby.Server.Implementations.Dto
var albumParent = audio.AlbumEntity;
- if (albumParent != null)
+ if (albumParent is not null)
{
dto.AlbumId = albumParent.Id;
dto.AlbumPrimaryImageTag = GetTagAndFillBlurhash(dto, albumParent, ImageType.Primary);
@@ -967,7 +967,7 @@ namespace Emby.Server.Implementations.Dto
{
EnableImages = false
});
- if (artist != null)
+ if (artist is not null)
{
return new NameGuidPair
{
@@ -977,7 +977,7 @@ namespace Emby.Server.Implementations.Dto
}
return null;
- }).Where(i => i != null).ToArray();
+ }).Where(i => i is not null).ToArray();
}
if (item is IHasAlbumArtist hasAlbumArtist)
@@ -1016,7 +1016,7 @@ namespace Emby.Server.Implementations.Dto
{
EnableImages = false
});
- if (artist != null)
+ if (artist is not null)
{
return new NameGuidPair
{
@@ -1026,7 +1026,7 @@ namespace Emby.Server.Implementations.Dto
}
return null;
- }).Where(i => i != null).ToArray();
+ }).Where(i => i is not null).ToArray();
}
// Add video info
@@ -1073,7 +1073,7 @@ namespace Emby.Server.Implementations.Dto
{
MediaStream[] mediaStreams;
- if (dto.MediaSources != null && dto.MediaSources.Length > 0)
+ if (dto.MediaSources is not null && dto.MediaSources.Length > 0)
{
if (item.SourceType == SourceType.Channel)
{
@@ -1140,10 +1140,10 @@ namespace Emby.Server.Implementations.Dto
// if (options.ContainsField(ItemFields.SeriesPrimaryImage))
{
episodeSeries ??= episode.Series;
- if (episodeSeries != null)
+ if (episodeSeries is not null)
{
dto.SeriesPrimaryImageTag = GetTagAndFillBlurhash(dto, episodeSeries, ImageType.Primary);
- if (dto.ImageTags == null || !dto.ImageTags.ContainsKey(ImageType.Primary))
+ if (dto.ImageTags is null || !dto.ImageTags.ContainsKey(ImageType.Primary))
{
AttachPrimaryImageAspectRatio(dto, episodeSeries);
}
@@ -1153,7 +1153,7 @@ namespace Emby.Server.Implementations.Dto
if (options.ContainsField(ItemFields.SeriesStudio))
{
episodeSeries ??= episode.Series;
- if (episodeSeries != null)
+ if (episodeSeries is not null)
{
dto.SeriesStudio = episodeSeries.Studios.FirstOrDefault();
}
@@ -1179,7 +1179,7 @@ namespace Emby.Server.Implementations.Dto
if (options.ContainsField(ItemFields.SeriesStudio))
{
series ??= season.Series;
- if (series != null)
+ if (series is not null)
{
dto.SeriesStudio = series.Studios.FirstOrDefault();
}
@@ -1190,10 +1190,10 @@ namespace Emby.Server.Implementations.Dto
// if (options.ContainsField(ItemFields.SeriesPrimaryImage))
{
series ??= season.Series;
- if (series != null)
+ if (series is not null)
{
dto.SeriesPrimaryImageTag = GetTagAndFillBlurhash(dto, series, ImageType.Primary);
- if (dto.ImageTags == null || !dto.ImageTags.ContainsKey(ImageType.Primary))
+ if (dto.ImageTags is null || !dto.ImageTags.ContainsKey(ImageType.Primary))
{
AttachPrimaryImageAspectRatio(dto, series);
}
@@ -1256,7 +1256,7 @@ namespace Emby.Server.Implementations.Dto
if (item.SourceType == SourceType.Channel)
{
var channel = _libraryManager.GetItemById(item.ChannelId);
- if (channel != null)
+ if (channel is not null)
{
dto.ChannelName = channel.Name;
}
@@ -1268,7 +1268,7 @@ namespace Emby.Server.Implementations.Dto
if (currentItem is MusicAlbum musicAlbum)
{
var artist = musicAlbum.GetMusicArtist(new DtoOptions(false));
- if (artist != null)
+ if (artist is not null)
{
return artist;
}
@@ -1276,7 +1276,7 @@ namespace Emby.Server.Implementations.Dto
var parent = currentItem.DisplayParent ?? currentItem.GetOwner() ?? currentItem.GetParent();
- if (parent == null && originalItem is not UserRootFolder && originalItem is not UserView && originalItem is not AggregateFolder && originalItem is not ICollectionFolder && originalItem is not Channel)
+ if (parent is null && originalItem is not UserRootFolder && originalItem is not UserView && originalItem is not AggregateFolder && originalItem is not ICollectionFolder && originalItem is not Channel)
{
parent = _libraryManager.GetCollectionFolders(originalItem).FirstOrDefault();
}
@@ -1309,53 +1309,53 @@ namespace Emby.Server.Implementations.Dto
var imageTags = dto.ImageTags;
- while ((!(imageTags != null && imageTags.ContainsKey(ImageType.Logo)) && logoLimit > 0)
- || (!(imageTags != null && imageTags.ContainsKey(ImageType.Art)) && artLimit > 0)
- || (!(imageTags != null && imageTags.ContainsKey(ImageType.Thumb)) && thumbLimit > 0)
+ while ((!(imageTags is not null && imageTags.ContainsKey(ImageType.Logo)) && logoLimit > 0)
+ || (!(imageTags is not null && imageTags.ContainsKey(ImageType.Art)) && artLimit > 0)
+ || (!(imageTags is not null && imageTags.ContainsKey(ImageType.Thumb)) && thumbLimit > 0)
|| parent is Series)
{
parent ??= isFirst ? GetImageDisplayParent(item, item) ?? owner : parent;
- if (parent == null)
+ if (parent is null)
{
break;
}
var allImages = parent.ImageInfos;
- if (logoLimit > 0 && !(imageTags != null && imageTags.ContainsKey(ImageType.Logo)) && dto.ParentLogoItemId is null)
+ if (logoLimit > 0 && !(imageTags is not null && imageTags.ContainsKey(ImageType.Logo)) && dto.ParentLogoItemId is null)
{
var image = allImages.FirstOrDefault(i => i.Type == ImageType.Logo);
- if (image != null)
+ if (image is not null)
{
dto.ParentLogoItemId = parent.Id;
dto.ParentLogoImageTag = GetTagAndFillBlurhash(dto, parent, image);
}
}
- if (artLimit > 0 && !(imageTags != null && imageTags.ContainsKey(ImageType.Art)) && dto.ParentArtItemId is null)
+ if (artLimit > 0 && !(imageTags is not null && imageTags.ContainsKey(ImageType.Art)) && dto.ParentArtItemId is null)
{
var image = allImages.FirstOrDefault(i => i.Type == ImageType.Art);
- if (image != null)
+ if (image is not null)
{
dto.ParentArtItemId = parent.Id;
dto.ParentArtImageTag = GetTagAndFillBlurhash(dto, parent, image);
}
}
- if (thumbLimit > 0 && !(imageTags != null && imageTags.ContainsKey(ImageType.Thumb)) && (dto.ParentThumbItemId is null || parent is Series) && parent is not ICollectionFolder && parent is not UserView)
+ if (thumbLimit > 0 && !(imageTags is not null && imageTags.ContainsKey(ImageType.Thumb)) && (dto.ParentThumbItemId is null || parent is Series) && parent is not ICollectionFolder && parent is not UserView)
{
var image = allImages.FirstOrDefault(i => i.Type == ImageType.Thumb);
- if (image != null)
+ if (image is not null)
{
dto.ParentThumbItemId = parent.Id;
dto.ParentThumbImageTag = GetTagAndFillBlurhash(dto, parent, image);
}
}
- if (backdropLimit > 0 && !((dto.BackdropImageTags != null && dto.BackdropImageTags.Length > 0) || (dto.ParentBackdropImageTags != null && dto.ParentBackdropImageTags.Length > 0)))
+ if (backdropLimit > 0 && !((dto.BackdropImageTags is not null && dto.BackdropImageTags.Length > 0) || (dto.ParentBackdropImageTags is not null && dto.ParentBackdropImageTags.Length > 0)))
{
var images = allImages.Where(i => i.Type == ImageType.Backdrop).Take(backdropLimit).ToList();
@@ -1403,7 +1403,7 @@ namespace Emby.Server.Implementations.Dto
{
var imageInfo = item.GetImageInfo(ImageType.Primary, 0);
- if (imageInfo == null)
+ if (imageInfo is null)
{
return null;
}
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index de756e1e3..e3d430c69 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -25,11 +25,11 @@
<ItemGroup>
<PackageReference Include="DiscUtils.Udf" Version="0.16.13" />
<PackageReference Include="Jellyfin.XmlTv" Version="10.8.0" />
- <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
- <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
- <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
- <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.11" />
+ <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="7.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="7.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.0" />
<PackageReference Include="Mono.Nat" Version="3.0.4" />
<PackageReference Include="prometheus-net.DotNetRuntime" Version="4.4.0" />
<PackageReference Include="SQLitePCL.pretty.netstandard" Version="3.1.0" />
@@ -41,7 +41,7 @@
</ItemGroup>
<PropertyGroup>
- <TargetFramework>net6.0</TargetFramework>
+ <TargetFramework>net7.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<!-- https://github.com/microsoft/ApplicationInsights-dotnet/issues/2047 -->
diff --git a/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
index d5e4a636e..25a7029c9 100644
--- a/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
+++ b/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
@@ -191,7 +191,7 @@ namespace Emby.Server.Implementations.EntryPoints
lock (_libraryChangedSyncLock)
{
- if (LibraryUpdateTimer == null)
+ if (LibraryUpdateTimer is null)
{
LibraryUpdateTimer = new Timer(
LibraryUpdateTimerCallback,
@@ -227,7 +227,7 @@ namespace Emby.Server.Implementations.EntryPoints
lock (_libraryChangedSyncLock)
{
- if (LibraryUpdateTimer == null)
+ if (LibraryUpdateTimer is null)
{
LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite);
}
@@ -254,7 +254,7 @@ namespace Emby.Server.Implementations.EntryPoints
lock (_libraryChangedSyncLock)
{
- if (LibraryUpdateTimer == null)
+ if (LibraryUpdateTimer is null)
{
LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite);
}
@@ -299,7 +299,7 @@ namespace Emby.Server.Implementations.EntryPoints
SendChangeNotifications(_itemsAdded.ToList(), itemsUpdated, _itemsRemoved.ToList(), foldersAddedTo, foldersRemovedFrom, CancellationToken.None).GetAwaiter().GetResult();
- if (LibraryUpdateTimer != null)
+ if (LibraryUpdateTimer is not null)
{
LibraryUpdateTimer.Dispose();
LibraryUpdateTimer = null;
@@ -475,7 +475,7 @@ namespace Emby.Server.Implementations.EntryPoints
{
if (dispose)
{
- if (LibraryUpdateTimer != null)
+ if (LibraryUpdateTimer is not null)
{
LibraryUpdateTimer.Dispose();
LibraryUpdateTimer = null;
diff --git a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs
index 82c8d3ab6..42c8f24a1 100644
--- a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs
+++ b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs
@@ -51,7 +51,7 @@ namespace Emby.Server.Implementations.EntryPoints
lock (_syncLock)
{
- if (_updateTimer == null)
+ if (_updateTimer is null)
{
_updateTimer = new Timer(
UpdateTimerCallback,
@@ -75,11 +75,11 @@ namespace Emby.Server.Implementations.EntryPoints
var baseItem = e.Item;
// Go up one level for indicators
- if (baseItem != null)
+ if (baseItem is not null)
{
var parent = baseItem.GetOwner() ?? baseItem.GetParent();
- if (parent != null)
+ if (parent is not null)
{
keys.Add(parent);
}
@@ -97,7 +97,7 @@ namespace Emby.Server.Implementations.EntryPoints
SendNotifications(changes, CancellationToken.None).GetAwaiter().GetResult();
- if (_updateTimer != null)
+ if (_updateTimer is not null)
{
_updateTimer.Dispose();
_updateTimer = null;
@@ -145,7 +145,7 @@ namespace Emby.Server.Implementations.EntryPoints
public void Dispose()
{
- if (_updateTimer != null)
+ if (_updateTimer is not null)
{
_updateTimer.Dispose();
_updateTimer = null;
diff --git a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
index d095248fa..b1a99853a 100644
--- a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
+++ b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
@@ -164,7 +164,7 @@ namespace Emby.Server.Implementations.HttpServer
ReadResult result = await reader.ReadAsync().ConfigureAwait(false);
ReadOnlySequence<byte> buffer = result.Buffer;
- if (OnReceive == null)
+ if (OnReceive is null)
{
// Tell the PipeReader how much of the buffer we have consumed
reader.AdvanceTo(buffer.End);
@@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.HttpServer
return;
}
- if (stub == null)
+ if (stub is null)
{
_logger.LogError("Error processing web socket message");
return;
diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs
index 6326208f7..ec8590929 100644
--- a/Emby.Server.Implementations/IO/FileRefresher.cs
+++ b/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)
{
@@ -80,7 +74,7 @@ namespace Emby.Server.Implementations.IO
return;
}
- if (_timer == null)
+ if (_timer is null)
{
_timer = new Timer(OnTimerCallback, null, TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryMonitorDelay), TimeSpan.FromMilliseconds(-1));
}
@@ -138,7 +132,7 @@ namespace Emby.Server.Implementations.IO
IEnumerable<BaseItem> itemsToRefresh = paths
.Distinct(StringComparer.OrdinalIgnoreCase)
.Select(GetAffectedBaseItem)
- .Where(item => item != null)
+ .Where(item => item is not null)
.GroupBy(x => x!.Id) // Removed null values in the previous .Where()
.Select(x => x.First())!;
@@ -178,21 +172,21 @@ namespace Emby.Server.Implementations.IO
{
BaseItem? item = null;
- while (item == null && !string.IsNullOrEmpty(path))
+ while (item is null && !string.IsNullOrEmpty(path))
{
item = _libraryManager.FindByPath(path, null);
path = System.IO.Path.GetDirectoryName(path) ?? string.Empty;
}
- if (item != null)
+ if (item is not null)
{
// If the item has been deleted find the first valid parent that still exists
while (!Directory.Exists(item.Path) && !File.Exists(item.Path))
{
item = item.GetOwner() ?? item.GetParent();
- if (item == null)
+ if (item is null)
{
break;
}
@@ -206,7 +200,7 @@ namespace Emby.Server.Implementations.IO
{
lock (_timerLock)
{
- if (_timer != null)
+ if (_timer is not null)
{
_timer.Dispose();
_timer = null;
diff --git a/Emby.Server.Implementations/IO/LibraryMonitor.cs b/Emby.Server.Implementations/IO/LibraryMonitor.cs
index c1422c43d..4b999d40b 100644
--- a/Emby.Server.Implementations/IO/LibraryMonitor.cs
+++ b/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
@@ -115,7 +109,7 @@ namespace Emby.Server.Implementations.IO
var options = _libraryManager.GetLibraryOptions(item);
- if (options != null)
+ if (options is not null)
{
return options.EnableRealtimeMonitor;
}
@@ -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);
diff --git a/Emby.Server.Implementations/IO/ManagedFileSystem.cs b/Emby.Server.Implementations/IO/ManagedFileSystem.cs
index 120b1812a..55f384ae8 100644
--- a/Emby.Server.Implementations/IO/ManagedFileSystem.cs
+++ b/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,20 +130,13 @@ 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));
- if (handler != null)
+ if (handler is not null)
{
handler.Create(shortcutPath, target);
}
@@ -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))
{
@@ -621,14 +591,14 @@ namespace Emby.Server.Implementations.IO
// On linux and osx the search pattern is case sensitive
// If we're OK with case-sensitivity, and we're only filtering for one extension, then use the native method
- if ((enableCaseSensitiveExtensions || _isEnvironmentCaseInsensitive) && extensions != null && extensions.Count == 1)
+ if ((enableCaseSensitiveExtensions || _isEnvironmentCaseInsensitive) && extensions is not null && extensions.Count == 1)
{
return ToMetadata(new DirectoryInfo(path).EnumerateFiles("*" + extensions[0], enumerationOptions));
}
var files = new DirectoryInfo(path).EnumerateFiles("*", enumerationOptions);
- if (extensions != null && extensions.Count > 0)
+ if (extensions is not null && extensions.Count > 0)
{
files = files.Where(i =>
{
@@ -678,14 +648,14 @@ namespace Emby.Server.Implementations.IO
// On linux and osx the search pattern is case sensitive
// If we're OK with case-sensitivity, and we're only filtering for one extension, then use the native method
- if ((enableCaseSensitiveExtensions || _isEnvironmentCaseInsensitive) && extensions != null && extensions.Length == 1)
+ if ((enableCaseSensitiveExtensions || _isEnvironmentCaseInsensitive) && extensions is not null && extensions.Length == 1)
{
return Directory.EnumerateFiles(path, "*" + extensions[0], enumerationOptions);
}
var files = Directory.EnumerateFiles(path, "*", enumerationOptions);
- if (extensions != null && extensions.Length > 0)
+ if (extensions is not null && extensions.Length > 0)
{
files = files.Where(i =>
{
diff --git a/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs b/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs
index 76c58d5dc..c2aab3879 100644
--- a/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs
+++ b/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);
}
diff --git a/Emby.Server.Implementations/IO/StreamHelper.cs b/Emby.Server.Implementations/IO/StreamHelper.cs
index f55c16d6d..6eaf22ce4 100644
--- a/Emby.Server.Implementations/IO/StreamHelper.cs
+++ b/Emby.Server.Implementations/IO/StreamHelper.cs
@@ -23,7 +23,7 @@ namespace Emby.Server.Implementations.IO
await destination.WriteAsync(buffer.AsMemory(0, read), cancellationToken).ConfigureAwait(false);
- if (onStarted != null)
+ if (onStarted is not null)
{
onStarted();
onStarted = null;
diff --git a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs
index 57c2f1a5e..0a3d740cc 100644
--- a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs
+++ b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs
@@ -81,7 +81,7 @@ namespace Emby.Server.Implementations.Images
{
var image = item.GetImageInfo(imageType, 0);
- if (image != null)
+ if (image is not null)
{
if (!image.IsLocalFile)
{
@@ -143,20 +143,20 @@ namespace Emby.Server.Implementations.Images
if (useBackdrop)
{
var backdrop = i.GetImageInfo(ImageType.Backdrop, 0);
- if (backdrop != null && backdrop.IsLocalFile)
+ if (backdrop is not null && backdrop.IsLocalFile)
{
return backdrop.Path;
}
}
var image = i.GetImageInfo(ImageType.Primary, 0);
- if (image != null && image.IsLocalFile)
+ if (image is not null && image.IsLocalFile)
{
return image.Path;
}
image = i.GetImageInfo(ImageType.Thumb, 0);
- if (image != null && image.IsLocalFile)
+ if (image is not null && image.IsLocalFile)
{
return image.Path;
}
@@ -268,7 +268,7 @@ namespace Emby.Server.Implementations.Images
{
var image = item.GetImageInfo(type, 0);
- if (image != null)
+ if (image is not null)
{
if (!image.IsLocalFile)
{
diff --git a/Emby.Server.Implementations/Images/DynamicImageProvider.cs b/Emby.Server.Implementations/Images/DynamicImageProvider.cs
index 0faa0f8fa..82690f8a9 100644
--- a/Emby.Server.Implementations/Images/DynamicImageProvider.cs
+++ b/Emby.Server.Implementations/Images/DynamicImageProvider.cs
@@ -52,7 +52,7 @@ namespace Emby.Server.Implementations.Images
if (i is Episode episode)
{
var series = episode.Series;
- if (series != null)
+ if (series is not null)
{
return series;
}
@@ -63,7 +63,7 @@ namespace Emby.Server.Implementations.Images
if (i is Season season)
{
var series = season.Series;
- if (series != null)
+ if (series is not null)
{
return series;
}
@@ -74,7 +74,7 @@ namespace Emby.Server.Implementations.Images
if (i is Audio audio)
{
var album = audio.AlbumEntity;
- if (album != null && album.HasImage(ImageType.Primary))
+ if (album is not null && album.HasImage(ImageType.Primary))
{
return album;
}
diff --git a/Emby.Server.Implementations/Images/PlaylistImageProvider.cs b/Emby.Server.Implementations/Images/PlaylistImageProvider.cs
index b8f0f0d65..580151287 100644
--- a/Emby.Server.Implementations/Images/PlaylistImageProvider.cs
+++ b/Emby.Server.Implementations/Images/PlaylistImageProvider.cs
@@ -34,7 +34,7 @@ namespace Emby.Server.Implementations.Images
if (subItem is Episode episode)
{
var series = episode.Series;
- if (series != null && series.HasImage(ImageType.Primary))
+ if (series is not null && series.HasImage(ImageType.Primary))
{
return series;
}
@@ -47,7 +47,7 @@ namespace Emby.Server.Implementations.Images
var parent = subItem.GetOwner() ?? subItem.GetParent();
- if (parent != null && parent.HasImage(ImageType.Primary))
+ if (parent is not null && parent.HasImage(ImageType.Primary))
{
if (parent is MusicAlbum)
{
@@ -57,7 +57,7 @@ namespace Emby.Server.Implementations.Images
return null;
})
- .Where(i => i != null)
+ .Where(i => i is not null)
.GroupBy(x => x.Id)
.Select(x => x.First())
.ToList();
diff --git a/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
index e558fbe27..665d70a41 100644
--- a/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
+++ b/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
@@ -52,7 +52,7 @@ namespace Emby.Server.Implementations.Library
if (fileInfo.IsDirectory)
{
- if (parent != null)
+ if (parent is not null)
{
// Ignore extras folders but allow it at the collection level
if (_namingOptions.AllExtrasTypesFolderNames.ContainsKey(filename)
@@ -65,7 +65,7 @@ namespace Emby.Server.Implementations.Library
}
else
{
- if (parent != null)
+ if (parent is not null)
{
// Don't resolve these into audio files
if (Path.GetFileNameWithoutExtension(filename.AsSpan()).Equals(BaseItem.ThemeSongFileName, StringComparison.Ordinal)
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index b688af528..70439d258 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -176,7 +176,7 @@ namespace Emby.Server.Implementations.Library
{
get
{
- if (_rootFolder == null)
+ if (_rootFolder is null)
{
lock (_rootFolderSyncLock)
{
@@ -465,9 +465,9 @@ namespace Emby.Server.Implementations.Library
private BaseItem ResolveItem(ItemResolveArgs args, IItemResolver[] resolvers)
{
var item = (resolvers ?? EntityResolvers).Select(r => Resolve(args, r))
- .FirstOrDefault(i => i != null);
+ .FirstOrDefault(i => i is not null);
- if (item != null)
+ if (item is not null)
{
ResolverHelper.SetInitialItemValues(item, args, _fileSystem, this);
}
@@ -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;
@@ -536,7 +532,7 @@ namespace Emby.Server.Implementations.Library
var fullPath = fileInfo.FullName;
- if (string.IsNullOrEmpty(collectionType) && parent != null)
+ if (string.IsNullOrEmpty(collectionType) && parent is not null)
{
collectionType = GetContentTypeOverride(fullPath, true);
}
@@ -572,7 +568,7 @@ namespace Emby.Server.Implementations.Library
}
catch (Exception ex)
{
- if (parent != null && parent.IsPhysicalRoot)
+ if (parent is not null && parent.IsPhysicalRoot)
{
_logger.LogError(ex, "Error in GetFilteredFileSystemEntries isPhysicalRoot: {0} IsVf: {1}", isPhysicalRoot, isVf);
@@ -654,9 +650,9 @@ namespace Emby.Server.Implementations.Library
{
var fileList = files.Where(i => !IgnoreFile(i, parent)).ToList();
- if (parent != null)
+ if (parent is not null)
{
- var multiItemResolvers = resolvers == null ? MultiItemResolvers : resolvers.OfType<IMultiItemResolver>().ToArray();
+ var multiItemResolvers = resolvers is null ? MultiItemResolvers : resolvers.OfType<IMultiItemResolver>().ToArray();
foreach (var resolver in multiItemResolvers)
{
@@ -697,7 +693,7 @@ namespace Emby.Server.Implementations.Library
_logger.LogError(ex, "Error resolving path {Path}", file.FullName);
}
- if (result != null)
+ if (result is not null)
{
yield return result;
}
@@ -750,7 +746,7 @@ namespace Emby.Server.Implementations.Library
var dbItem = GetItemById(folder.Id) as BasePluginFolder;
- if (dbItem != null && string.Equals(dbItem.Path, folder.Path, StringComparison.OrdinalIgnoreCase))
+ if (dbItem is not null && string.Equals(dbItem.Path, folder.Path, StringComparison.OrdinalIgnoreCase))
{
folder = dbItem;
}
@@ -770,11 +766,11 @@ namespace Emby.Server.Implementations.Library
public Folder GetUserRootFolder()
{
- if (_userRootFolder == null)
+ if (_userRootFolder is null)
{
lock (_userRootFolderSyncLock)
{
- if (_userRootFolder == null)
+ if (_userRootFolder is null)
{
var userRootPath = _configurationManager.ApplicationPaths.DefaultUserViewsPath;
@@ -792,7 +788,7 @@ namespace Emby.Server.Implementations.Library
_logger.LogError(ex, "Error creating UserRootFolder {Path}", newItemId);
}
- if (tmpItem == null)
+ if (tmpItem is null)
{
_logger.LogDebug("Creating new userRootFolder with DeepCopy");
tmpItem = ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath))).DeepCopy<Folder, UserRootFolder>();
@@ -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
{
@@ -952,7 +945,7 @@ namespace Emby.Server.Implementations.Library
.Cast<T>()
.FirstOrDefault();
- if (existing != null)
+ if (existing is not null)
{
return existing;
}
@@ -961,7 +954,7 @@ namespace Emby.Server.Implementations.Library
var path = getPathFn(name);
var id = GetItemByNameId<T>(path);
var item = GetItemById(id) as T;
- if (item == null)
+ if (item is null)
{
item = new T
{
@@ -1181,7 +1174,7 @@ namespace Emby.Server.Implementations.Library
return null;
}
})
- .Where(i => i != null)
+ .Where(i => i is not null)
.OrderBy(i => i)
.ToArray(),
@@ -1190,17 +1183,17 @@ namespace Emby.Server.Implementations.Library
var libraryFolder = allCollectionFolders.FirstOrDefault(i => string.Equals(i.Path, dir, StringComparison.OrdinalIgnoreCase));
- if (libraryFolder != null && libraryFolder.HasImage(ImageType.Primary))
+ if (libraryFolder is not null && libraryFolder.HasImage(ImageType.Primary))
{
info.PrimaryImageItemId = libraryFolder.Id.ToString("N", CultureInfo.InvariantCulture);
}
- if (libraryFolder != null)
+ if (libraryFolder is not null)
{
info.ItemId = libraryFolder.Id.ToString("N", CultureInfo.InvariantCulture);
info.LibraryOptions = GetLibraryOptions(libraryFolder);
- if (refreshQueue != null)
+ if (refreshQueue is not null)
{
info.RefreshProgress = libraryFolder.GetRefreshProgress();
@@ -1245,7 +1238,7 @@ namespace Emby.Server.Implementations.Library
item = RetrieveItem(id);
- if (item != null)
+ if (item is not null)
{
RegisterItem(item);
}
@@ -1258,13 +1251,13 @@ namespace Emby.Server.Implementations.Library
if (query.Recursive && !query.ParentId.Equals(default))
{
var parent = GetItemById(query.ParentId);
- if (parent != null)
+ if (parent is not null)
{
SetTopParentIdsOrAncestors(query, new List<BaseItem> { parent });
}
}
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User, allowExternalContent);
}
@@ -1282,13 +1275,13 @@ namespace Emby.Server.Implementations.Library
if (query.Recursive && !query.ParentId.Equals(default))
{
var parent = GetItemById(query.ParentId);
- if (parent != null)
+ if (parent is not null)
{
SetTopParentIdsOrAncestors(query, new List<BaseItem> { parent });
}
}
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1302,7 +1295,7 @@ namespace Emby.Server.Implementations.Library
if (query.AncestorIds.Length == 0 && query.TopParentIds.Length == 0)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1313,7 +1306,7 @@ namespace Emby.Server.Implementations.Library
public QueryResult<BaseItem> QueryItems(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1331,7 +1324,7 @@ namespace Emby.Server.Implementations.Library
public List<Guid> GetItemIds(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1341,7 +1334,7 @@ namespace Emby.Server.Implementations.Library
public QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetStudios(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1352,7 +1345,7 @@ namespace Emby.Server.Implementations.Library
public QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetGenres(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1363,7 +1356,7 @@ namespace Emby.Server.Implementations.Library
public QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetMusicGenres(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1374,7 +1367,7 @@ namespace Emby.Server.Implementations.Library
public QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetAllArtists(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1385,7 +1378,7 @@ namespace Emby.Server.Implementations.Library
public QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetArtists(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1426,7 +1419,7 @@ namespace Emby.Server.Implementations.Library
public QueryResult<(BaseItem Item, ItemCounts ItemCounts)> GetAlbumArtists(InternalItemsQuery query)
{
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1440,13 +1433,13 @@ namespace Emby.Server.Implementations.Library
if (query.Recursive && !query.ParentId.Equals(default))
{
var parent = GetItemById(query.ParentId);
- if (parent != null)
+ if (parent is not null)
{
SetTopParentIdsOrAncestors(query, new List<BaseItem> { parent });
}
}
- if (query.User != null)
+ if (query.User is not null)
{
AddUserToQuery(query, query.User);
}
@@ -1524,7 +1517,7 @@ namespace Emby.Server.Implementations.Library
if (!view.DisplayParentId.Equals(default))
{
var displayParent = GetItemById(view.DisplayParentId);
- if (displayParent != null)
+ if (displayParent is not null)
{
return GetTopParentIdsForQuery(displayParent, user);
}
@@ -1535,7 +1528,7 @@ namespace Emby.Server.Implementations.Library
if (!view.ParentId.Equals(default))
{
var displayParent = GetItemById(view.ParentId);
- if (displayParent != null)
+ if (displayParent is not null)
{
return GetTopParentIdsForQuery(displayParent, user);
}
@@ -1544,7 +1537,7 @@ namespace Emby.Server.Implementations.Library
}
// Handle grouping
- if (user != null && !string.IsNullOrEmpty(view.ViewType) && UserView.IsEligibleForGrouping(view.ViewType)
+ if (user is not null && !string.IsNullOrEmpty(view.ViewType) && UserView.IsEligibleForGrouping(view.ViewType)
&& user.GetPreference(PreferenceKind.GroupedFolders).Length > 0)
{
return GetUserRootFolder()
@@ -1564,7 +1557,7 @@ namespace Emby.Server.Implementations.Library
}
var topParent = item.GetTopParent();
- if (topParent != null)
+ if (topParent is not null)
{
return new[] { topParent.Id };
}
@@ -1589,7 +1582,7 @@ namespace Emby.Server.Implementations.Library
return items
.SelectMany(i => i.ToArray())
.Select(ResolveIntro)
- .Where(i => i != null);
+ .Where(i => i is not null);
}
/// <summary>
@@ -1627,7 +1620,7 @@ namespace Emby.Server.Implementations.Library
// Get an existing item by Id
video = GetItemById(info.ItemId.Value) as Video;
- if (video == null)
+ if (video is null)
{
_logger.LogError("Unable to locate item with Id {ID}.", info.ItemId.Value);
}
@@ -1639,7 +1632,7 @@ namespace Emby.Server.Implementations.Library
// Try to resolve the path into a video
video = ResolvePath(_fileSystem.GetFileSystemInfo(info.Path)) as Video;
- if (video == null)
+ if (video is null)
{
_logger.LogError("Intro resolver returned null for {Path}.", info.Path);
}
@@ -1648,7 +1641,7 @@ namespace Emby.Server.Implementations.Library
// Pull the saved db item that will include metadata
var dbItem = GetItemById(video.Id) as Video;
- if (dbItem != null)
+ if (dbItem is not null)
{
video = dbItem;
}
@@ -1685,7 +1678,7 @@ namespace Emby.Server.Implementations.Library
IOrderedEnumerable<BaseItem> orderedItems = null;
- foreach (var orderBy in sortBy.Select(o => GetComparer(o, user)).Where(c => c != null))
+ foreach (var orderBy in sortBy.Select(o => GetComparer(o, user)).Where(c => c is not null))
{
if (isFirst)
{
@@ -1711,7 +1704,7 @@ namespace Emby.Server.Implementations.Library
foreach (var (name, sortOrder) in orderBy)
{
var comparer = GetComparer(name, user);
- if (comparer == null)
+ if (comparer is null)
{
continue;
}
@@ -1781,7 +1774,7 @@ namespace Emby.Server.Implementations.Library
RegisterItem(item);
}
- if (ItemAdded != null)
+ if (ItemAdded is not null)
{
foreach (var item in items)
{
@@ -1811,7 +1804,7 @@ namespace Emby.Server.Implementations.Library
private bool ImageNeedsRefresh(ItemImageInfo image)
{
- if (image.Path != null && image.IsLocalFile)
+ if (image.Path is not null && image.IsLocalFile)
{
if (image.Width == 0 || image.Height == 0 || string.IsNullOrEmpty(image.BlurHash))
{
@@ -1829,7 +1822,7 @@ namespace Emby.Server.Implementations.Library
}
}
- return image.Path != null && !image.IsLocalFile;
+ return image.Path is not null && !image.IsLocalFile;
}
/// <inheritdoc />
@@ -1838,7 +1831,7 @@ namespace Emby.Server.Implementations.Library
ArgumentNullException.ThrowIfNull(item);
var outdated = forceUpdate
- ? item.ImageInfos.Where(i => i.Path != null).ToArray()
+ ? item.ImageInfos.Where(i => i.Path is not null).ToArray()
: item.ImageInfos.Where(ImageNeedsRefresh).ToArray();
// Skip image processing if current or live tv source
if (outdated.Length == 0 || item.SourceType != SourceType.Library)
@@ -1923,7 +1916,7 @@ namespace Emby.Server.Implementations.Library
_itemRepository.SaveItems(items, cancellationToken);
- if (ItemUpdated != null)
+ if (ItemUpdated is not null)
{
foreach (var item in items)
{
@@ -1975,7 +1968,7 @@ namespace Emby.Server.Implementations.Library
/// <param name="parent">The parent item.</param>
public void ReportItemRemoved(BaseItem item, BaseItem parent)
{
- if (ItemRemoved != null)
+ if (ItemRemoved is not null)
{
try
{
@@ -2006,11 +1999,11 @@ namespace Emby.Server.Implementations.Library
public List<Folder> GetCollectionFolders(BaseItem item)
{
- while (item != null)
+ while (item is not null)
{
var parent = item.GetParent();
- if (parent == null || parent is AggregateFolder)
+ if (parent is null || parent is AggregateFolder)
{
break;
}
@@ -2018,7 +2011,7 @@ namespace Emby.Server.Implementations.Library
item = parent;
}
- if (item == null)
+ if (item is null)
{
return new List<Folder>();
}
@@ -2028,11 +2021,11 @@ namespace Emby.Server.Implementations.Library
public List<Folder> GetCollectionFolders(BaseItem item, List<Folder> allUserRootChildren)
{
- while (item != null)
+ while (item is not null)
{
var parent = item.GetParent();
- if (parent == null || parent is AggregateFolder)
+ if (parent is null || parent is AggregateFolder)
{
break;
}
@@ -2040,7 +2033,7 @@ namespace Emby.Server.Implementations.Library
item = parent;
}
- if (item == null)
+ if (item is null)
{
return new List<Folder>();
}
@@ -2064,7 +2057,7 @@ namespace Emby.Server.Implementations.Library
.Find(folder => folder is CollectionFolder) as CollectionFolder;
}
- return collectionFolder == null ? new LibraryOptions() : collectionFolder.GetLibraryOptions();
+ return collectionFolder is null ? new LibraryOptions() : collectionFolder.GetLibraryOptions();
}
public string GetContentType(BaseItem item)
@@ -2129,7 +2122,7 @@ namespace Emby.Server.Implementations.Library
private string GetTopFolderContentType(BaseItem item)
{
- if (item == null)
+ if (item is null)
{
return null;
}
@@ -2137,7 +2130,7 @@ namespace Emby.Server.Implementations.Library
while (!item.ParentId.Equals(default))
{
var parent = item.GetParent();
- if (parent == null || parent is AggregateFolder)
+ if (parent is null || parent is AggregateFolder)
{
break;
}
@@ -2177,7 +2170,7 @@ namespace Emby.Server.Implementations.Library
var refresh = false;
- if (item == null || !string.Equals(item.Path, path, StringComparison.OrdinalIgnoreCase))
+ if (item is null || !string.Equals(item.Path, path, StringComparison.OrdinalIgnoreCase))
{
Directory.CreateDirectory(path);
@@ -2225,7 +2218,7 @@ namespace Emby.Server.Implementations.Library
var isNew = false;
- if (item == null)
+ if (item is null)
{
Directory.CreateDirectory(path);
@@ -2251,7 +2244,7 @@ namespace Emby.Server.Implementations.Library
if (!refresh && !item.DisplayParentId.Equals(default))
{
var displayParent = GetItemById(item.DisplayParentId);
- refresh = displayParent != null && displayParent.DateLastSaved > item.DateLastRefreshed;
+ refresh = displayParent is not null && displayParent.DateLastSaved > item.DateLastRefreshed;
}
if (refresh)
@@ -2289,7 +2282,7 @@ namespace Emby.Server.Implementations.Library
var isNew = false;
- if (item == null)
+ if (item is null)
{
Directory.CreateDirectory(path);
@@ -2315,7 +2308,7 @@ namespace Emby.Server.Implementations.Library
if (!refresh && !item.DisplayParentId.Equals(default))
{
var displayParent = GetItemById(item.DisplayParentId);
- refresh = displayParent != null && displayParent.DateLastSaved > item.DateLastRefreshed;
+ refresh = displayParent is not null && displayParent.DateLastSaved > item.DateLastRefreshed;
}
if (refresh)
@@ -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
@@ -2362,7 +2352,7 @@ namespace Emby.Server.Implementations.Library
var isNew = false;
- if (item == null)
+ if (item is null)
{
Directory.CreateDirectory(path);
@@ -2394,7 +2384,7 @@ namespace Emby.Server.Implementations.Library
if (!refresh && !item.DisplayParentId.Equals(default))
{
var displayParent = GetItemById(item.DisplayParentId);
- refresh = displayParent != null && displayParent.DateLastSaved > item.DateLastRefreshed;
+ refresh = displayParent is not null && displayParent.DateLastSaved > item.DateLastRefreshed;
}
if (refresh)
@@ -2441,7 +2431,7 @@ namespace Emby.Server.Implementations.Library
public bool FillMissingEpisodeNumbersFromPath(Episode episode, bool forceRefresh)
{
var series = episode.Series;
- bool? isAbsoluteNaming = series != null && string.Equals(series.DisplayOrder, "absolute", StringComparison.OrdinalIgnoreCase);
+ bool? isAbsoluteNaming = series is not null && string.Equals(series.DisplayOrder, "absolute", StringComparison.OrdinalIgnoreCase);
if (!isAbsoluteNaming.Value)
{
// In other words, no filter applied
@@ -2459,10 +2449,10 @@ namespace Emby.Server.Implementations.Library
episodeInfo = resolver.Resolve(episode.Path, isFolder, null, null, isAbsoluteNaming);
// Resolve from parent folder if it's not the Season folder
var parent = episode.GetParent();
- if (episodeInfo == null && parent.GetType() == typeof(Folder))
+ if (episodeInfo is null && parent.GetType() == typeof(Folder))
{
episodeInfo = resolver.Resolve(parent.Path, true, null, null, isAbsoluteNaming);
- if (episodeInfo != null)
+ if (episodeInfo is not null)
{
// add the container
episodeInfo.Container = Path.GetExtension(episode.Path)?.TrimStart('.');
@@ -2582,7 +2572,7 @@ namespace Emby.Server.Implementations.Library
{
var season = episode.Season;
- if (season != null)
+ if (season is not null)
{
episode.ParentIndexNumber = season.IndexNumber;
}
@@ -2620,7 +2610,7 @@ namespace Emby.Server.Implementations.Library
public IEnumerable<BaseItem> FindExtras(BaseItem owner, IReadOnlyList<FileSystemMetadata> fileSystemChildren, IDirectoryService directoryService)
{
var ownerVideoInfo = VideoResolver.Resolve(owner.Path, owner.IsFolder, _namingOptions);
- if (ownerVideoInfo == null)
+ if (ownerVideoInfo is null)
{
yield break;
}
@@ -2640,7 +2630,7 @@ namespace Emby.Server.Implementations.Library
}
var extra = GetExtra(file, extraType.Value);
- if (extra != null)
+ if (extra is not null)
{
yield return extra;
}
@@ -2649,7 +2639,7 @@ namespace Emby.Server.Implementations.Library
else if (!current.IsDirectory && _extraResolver.TryGetExtraTypeForOwner(current.FullName, ownerVideoInfo, out var extraType))
{
var extra = GetExtra(current, extraType.Value);
- if (extra != null)
+ if (extra is not null)
{
yield return extra;
}
@@ -2666,7 +2656,7 @@ namespace Emby.Server.Implementations.Library
// Try to retrieve it from the db. If we don't find it, use the resolved version
var itemById = GetItemById(extra.Id);
- if (itemById != null)
+ if (itemById is not null)
{
extra = itemById;
}
@@ -2681,10 +2671,10 @@ namespace Emby.Server.Implementations.Library
public string GetPathAfterNetworkSubstitution(string path, BaseItem ownerItem)
{
string newPath;
- if (ownerItem != null)
+ if (ownerItem is not null)
{
var libraryOptions = GetLibraryOptions(ownerItem);
- if (libraryOptions != null)
+ if (libraryOptions is not null)
{
foreach (var pathInfo in libraryOptions.PathInfos)
{
@@ -2753,8 +2743,8 @@ namespace Emby.Server.Implementations.Library
return null;
}
})
- .Where(i => i != null)
- .Where(i => query.User == null ?
+ .Where(i => i is not null)
+ .Where(i => query.User is null ?
true :
i.IsVisible(query.User))
.ToList();
@@ -2838,10 +2828,10 @@ namespace Emby.Server.Implementations.Library
}
var mediaPathInfos = options.PathInfos;
- if (mediaPathInfos != null)
+ if (mediaPathInfos is not null)
{
var invalidpath = mediaPathInfos.FirstOrDefault(i => !Directory.Exists(i.Path));
- if (invalidpath != null)
+ if (invalidpath is not null)
{
throw new ArgumentException("The specified path does not exist: " + invalidpath.Path + ".");
}
@@ -2853,7 +2843,7 @@ namespace Emby.Server.Implementations.Library
{
Directory.CreateDirectory(virtualFolderPath);
- if (collectionType != null)
+ if (collectionType is not null)
{
var path = Path.Combine(virtualFolderPath, collectionType.ToString().ToLowerInvariant() + ".collection");
@@ -2862,7 +2852,7 @@ namespace Emby.Server.Implementations.Library
CollectionFolder.SaveLibraryOptions(virtualFolderPath, options);
- if (mediaPathInfos != null)
+ if (mediaPathInfos is not null)
{
foreach (var path in mediaPathInfos)
{
@@ -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);
diff --git a/Emby.Server.Implementations/Library/LiveStreamHelper.cs b/Emby.Server.Implementations/Library/LiveStreamHelper.cs
index 20624cc7a..936a08da8 100644
--- a/Emby.Server.Implementations/Library/LiveStreamHelper.cs
+++ b/Emby.Server.Implementations/Library/LiveStreamHelper.cs
@@ -60,7 +60,7 @@ namespace Emby.Server.Implementations.Library
}
}
- if (mediaInfo == null)
+ if (mediaInfo is null)
{
if (addProbeDelay)
{
@@ -81,7 +81,7 @@ namespace Emby.Server.Implementations.Library
},
cancellationToken).ConfigureAwait(false);
- if (cacheFilePath != null)
+ if (cacheFilePath is not null)
{
Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath));
await using FileStream createStream = AsyncFile.OpenWrite(cacheFilePath);
@@ -130,7 +130,7 @@ namespace Emby.Server.Implementations.Library
var audioStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
- if (audioStream == null || audioStream.Index == -1)
+ if (audioStream is null || audioStream.Index == -1)
{
mediaSource.DefaultAudioStreamIndex = null;
}
@@ -140,7 +140,7 @@ namespace Emby.Server.Implementations.Library
}
var videoStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Video);
- if (videoStream != null)
+ if (videoStream is not null)
{
if (!videoStream.BitRate.HasValue)
{
diff --git a/Emby.Server.Implementations/Library/MediaSourceManager.cs b/Emby.Server.Implementations/Library/MediaSourceManager.cs
index bfccc7db7..eadfa5dfe 100644
--- a/Emby.Server.Implementations/Library/MediaSourceManager.cs
+++ b/Emby.Server.Implementations/Library/MediaSourceManager.cs
@@ -182,7 +182,7 @@ namespace Emby.Server.Implementations.Library
source.SupportsDirectStream = SupportsDirectStream(source.Path, source.Protocol);
}
- if (user != null)
+ if (user is not null)
{
SetDefaultAudioAndSubtitleStreamIndexes(item, source, user);
@@ -248,7 +248,7 @@ namespace Emby.Server.Implementations.Library
if (protocol == MediaProtocol.Http)
{
- if (path != null)
+ if (path is not null)
{
if (path.Contains(".m3u", StringComparison.OrdinalIgnoreCase))
{
@@ -328,7 +328,7 @@ namespace Emby.Server.Implementations.Library
var sources = hasMediaSources.GetMediaSources(enablePathSubstitution);
- if (user != null)
+ if (user is not null)
{
foreach (var source in sources)
{
@@ -357,7 +357,7 @@ namespace Emby.Server.Implementations.Library
}
var culture = _localizationManager.FindLanguageInfo(language);
- if (culture != null)
+ if (culture is not null)
{
return culture.ThreeLetterISOLanguageNames;
}
@@ -383,7 +383,7 @@ namespace Emby.Server.Implementations.Library
var preferredSubs = NormalizeLanguage(user.SubtitleLanguagePreference);
var defaultAudioIndex = source.DefaultAudioStreamIndex;
- var audioLangage = defaultAudioIndex == null
+ var audioLangage = defaultAudioIndex is null
? null
: source.MediaStreams.Where(i => i.Type == MediaStreamType.Audio && i.Index == defaultAudioIndex).Select(i => i.Language).FirstOrDefault();
@@ -417,13 +417,13 @@ namespace Emby.Server.Implementations.Library
public void SetDefaultAudioAndSubtitleStreamIndexes(BaseItem item, MediaSourceInfo source, User user)
{
// Item would only be null if the app didn't supply ItemId as part of the live stream open request
- var mediaType = item == null ? MediaType.Video : item.MediaType;
+ var mediaType = item is null ? MediaType.Video : item.MediaType;
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{
- var userData = item == null ? new UserItemData() : _userDataManager.GetUserData(user, item);
+ var userData = item is null ? new UserItemData() : _userDataManager.GetUserData(user, item);
- var allowRememberingSelection = item == null || item.EnableRememberingTrackSelections;
+ var allowRememberingSelection = item is null || item.EnableRememberingTrackSelections;
SetDefaultAudioStreamIndex(source, userData, user, allowRememberingSelection);
SetDefaultSubtitleStreamIndex(source, userData, user, allowRememberingSelection);
@@ -432,7 +432,7 @@ namespace Emby.Server.Implementations.Library
{
var audio = source.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
- if (audio != null)
+ if (audio is not null)
{
source.DefaultAudioStreamIndex = audio.Index;
}
@@ -543,7 +543,7 @@ namespace Emby.Server.Implementations.Library
var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
- if (audioStream == null || audioStream.Index == -1)
+ if (audioStream is null || audioStream.Index == -1)
{
mediaSource.DefaultAudioStreamIndex = null;
}
@@ -553,7 +553,7 @@ namespace Emby.Server.Implementations.Library
}
var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Video);
- if (videoStream != null)
+ if (videoStream is not null)
{
if (!videoStream.BitRate.HasValue)
{
@@ -638,7 +638,7 @@ namespace Emby.Server.Implementations.Library
}
}
- if (mediaInfo == null)
+ if (mediaInfo is null)
{
if (addProbeDelay)
{
@@ -661,7 +661,7 @@ namespace Emby.Server.Implementations.Library
},
cancellationToken).ConfigureAwait(false);
- if (cacheFilePath != null)
+ if (cacheFilePath is not null)
{
Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath));
await using FileStream createStream = File.Create(cacheFilePath);
@@ -713,7 +713,7 @@ namespace Emby.Server.Implementations.Library
var audioStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
- if (audioStream == null || audioStream.Index == -1)
+ if (audioStream is null || audioStream.Index == -1)
{
mediaSource.DefaultAudioStreamIndex = null;
}
@@ -723,7 +723,7 @@ namespace Emby.Server.Implementations.Library
}
var videoStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Video);
- if (videoStream != null)
+ if (videoStream is not null)
{
if (!videoStream.BitRate.HasValue)
{
@@ -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);
diff --git a/Emby.Server.Implementations/Library/MediaStreamSelector.cs b/Emby.Server.Implementations/Library/MediaStreamSelector.cs
index 609b95772..74c53b2da 100644
--- a/Emby.Server.Implementations/Library/MediaStreamSelector.cs
+++ b/Emby.Server.Implementations/Library/MediaStreamSelector.cs
@@ -19,7 +19,7 @@ namespace Emby.Server.Implementations.Library
{
var defaultStream = sortedStreams.FirstOrDefault(i => i.IsDefault);
- if (defaultStream != null)
+ if (defaultStream is not null)
{
return defaultStream.Index;
}
diff --git a/Emby.Server.Implementations/Library/ResolverHelper.cs b/Emby.Server.Implementations/Library/ResolverHelper.cs
index 4100a74a5..7a61e2607 100644
--- a/Emby.Server.Implementations/Library/ResolverHelper.cs
+++ b/Emby.Server.Implementations/Library/ResolverHelper.cs
@@ -25,13 +25,10 @@ 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 != null)
+ if (parent is not null)
{
item.SetParent(parent);
}
@@ -43,7 +40,7 @@ namespace Emby.Server.Implementations.Library
// Make sure DateCreated and DateModified have values
var fileInfo = directoryService.GetFile(item.Path);
- if (fileInfo == null)
+ if (fileInfo is null)
{
return false;
}
@@ -71,7 +68,7 @@ namespace Emby.Server.Implementations.Library
}
// If the resolver didn't specify this
- if (args.Parent != null)
+ if (args.Parent is not null)
{
item.SetParent(args.Parent);
}
@@ -113,7 +110,7 @@ namespace Emby.Server.Implementations.Library
{
var childData = args.IsDirectory ? args.GetFileSystemEntryByPath(item.Path) : null;
- if (childData != null)
+ if (childData is not null)
{
SetDateCreated(item, childData);
}
@@ -140,7 +137,7 @@ namespace Emby.Server.Implementations.Library
if (config.UseFileCreationTimeForDateAdded)
{
// directoryService.getFile may return null
- if (info != null)
+ if (info is not null)
{
var dateCreated = info.CreationTimeUtc;
diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs
index 7a6aea9c1..06621700a 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs
@@ -45,7 +45,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
{
var result = ResolveMultipleInternal(parent, files, collectionType);
- if (result != null)
+ if (result is not null)
{
foreach (var item in result.Items)
{
@@ -116,7 +116,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
// Use regular audio type for mixed libraries, owned items and music
if (isMixedCollectionType ||
- args.Parent == null ||
+ args.Parent is null ||
isMusicCollectionType)
{
item = new MediaBrowser.Controller.Entities.Audio.Audio();
@@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
item = new AudioBook();
}
- if (item != null)
+ if (item is not null)
{
item.IsShortcut = string.Equals(extension, ".strm", StringComparison.OrdinalIgnoreCase);
@@ -144,7 +144,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
// TODO: Allow GetMultiDiscMovie in here
var result = ResolveMultipleAudio(args.Parent, args.GetActualFileSystemChildren(), parseName);
- if (result == null || result.Items.Count != 1 || result.Items[0] is not AudioBook item)
+ if (result is null || result.Items.Count != 1 || result.Items[0] is not AudioBook item)
{
return null;
}
@@ -183,7 +183,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
Items = items
};
- var isInMixedFolder = resolverResult.Count > 1 || (parent != null && parent.IsTopParent);
+ var isInMixedFolder = resolverResult.Count > 1 || (parent is not null && parent.IsTopParent);
foreach (var resolvedItem in resolverResult)
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs
index b2a7abb1b..cb377136a 100644
--- a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs
@@ -79,7 +79,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
videoType = VideoType.Dvd;
}
- if (videoType == null)
+ if (videoType is null)
{
continue;
}
@@ -93,7 +93,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
videoInfo = VideoResolver.Resolve(args.Path, false, NamingOptions, parseName);
}
- if (videoInfo == null || (!videoInfo.IsStub && !VideoResolver.IsVideoFile(args.Path, NamingOptions)))
+ if (videoInfo is null || (!videoInfo.IsStub && !VideoResolver.IsVideoFile(args.Path, NamingOptions)))
{
return null;
}
diff --git a/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs
index 6fc200e3b..042422c6f 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs
@@ -34,7 +34,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Books
var extension = Path.GetExtension(args.Path);
- if (extension != null && _validExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
+ if (extension is not null && _validExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
{
// It's a book
return new Book
diff --git a/Emby.Server.Implementations/Library/Resolvers/ExtraResolver.cs b/Emby.Server.Implementations/Library/Resolvers/ExtraResolver.cs
index 408e640f9..30c52e19d 100644
--- a/Emby.Server.Implementations/Library/Resolvers/ExtraResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/ExtraResolver.cs
@@ -48,7 +48,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
public bool TryGetExtraTypeForOwner(string path, VideoFileInfo ownerVideoFileInfo, [NotNullWhen(true)] out ExtraType? extraType)
{
var extraResult = GetExtraInfo(path, _namingOptions);
- if (extraResult.ExtraType == null)
+ if (extraResult.ExtraType is null)
{
extraType = null;
return false;
diff --git a/Emby.Server.Implementations/Library/Resolvers/GenericFolderResolver.cs b/Emby.Server.Implementations/Library/Resolvers/GenericFolderResolver.cs
index 079962282..1c2de912a 100644
--- a/Emby.Server.Implementations/Library/Resolvers/GenericFolderResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/GenericFolderResolver.cs
@@ -22,7 +22,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
{
base.SetInitialItemValues(item, args);
- item.IsRoot = args.Parent == null;
+ item.IsRoot = args.Parent is null;
}
}
}
diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index 84d4688af..5f1a3ec6d 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -64,7 +64,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
{
var result = ResolveMultipleInternal(parent, files, collectionType);
- if (result != null)
+ if (result is not null)
{
foreach (var item in result.Items)
{
@@ -108,7 +108,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
if (string.IsNullOrEmpty(collectionType))
{
// Owned items will be caught by the video extra resolver
- if (args.Parent == null)
+ if (args.Parent is null)
{
return null;
}
@@ -127,10 +127,10 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
}
// ignore extras
- return movie?.ExtraType == null ? movie : null;
+ return movie?.ExtraType is null ? movie : null;
}
- if (args.Parent == null)
+ if (args.Parent is null)
{
return base.Resolve(args);
}
@@ -168,12 +168,12 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
}
// Ignore extras
- if (item?.ExtraType != null)
+ if (item?.ExtraType is not null)
{
return null;
}
- if (item != null)
+ if (item is not null)
{
item.IsInMixedFolder = true;
}
@@ -205,7 +205,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
if (string.IsNullOrEmpty(collectionType))
{
// Owned items should just use the plain video type
- if (parent == null)
+ if (parent is null)
{
return ResolveVideos<Video>(parent, files, false, collectionType, false);
}
@@ -268,7 +268,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
var videoInfos = files
.Select(i => VideoResolver.Resolve(i.FullName, i.IsDirectory, NamingOptions, parseName))
- .Where(f => f != null)
+ .Where(f => f is not null)
.ToList();
var resolverResult = VideoListResolver.Resolve(videoInfos, NamingOptions, supportMultiEditions, parseName);
@@ -284,7 +284,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
{
var firstVideo = video.Files[0];
var path = firstVideo.Path;
- if (video.ExtraType != null)
+ if (video.ExtraType is not null)
{
result.ExtraFiles.Add(files.Find(f => string.Equals(f.FullName, path, StringComparison.OrdinalIgnoreCase)));
continue;
@@ -568,7 +568,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
private bool IsInvalid(Folder parent, ReadOnlySpan<char> collectionType)
{
- if (parent != null)
+ if (parent is not null)
{
if (parent.IsRoot)
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
index 9ba079edf..0fcc5070b 100644
--- a/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
@@ -34,7 +34,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
{
var parent = args.Parent;
- if (parent == null)
+ if (parent is null)
{
return null;
}
@@ -46,34 +46,34 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
// If the parent is a Season or Series and the parent is not an extras folder, then this is an Episode if the VideoResolver returns something
// Also handle flat tv folders
- if (season != null ||
+ if (season is not null ||
string.Equals(args.GetCollectionType(), CollectionType.TvShows, StringComparison.OrdinalIgnoreCase) ||
args.HasParent<Series>())
{
var episode = ResolveVideo<Episode>(args, false);
// Ignore extras
- if (episode == null || episode.ExtraType != null)
+ if (episode is null || episode.ExtraType is not null)
{
return null;
}
var series = parent as Series ?? parent.GetParents().OfType<Series>().FirstOrDefault();
- if (series != null)
+ if (series is not null)
{
episode.SeriesId = series.Id;
episode.SeriesName = series.Name;
}
- if (season != null)
+ if (season is not null)
{
episode.SeasonId = season.Id;
episode.SeasonName = season.Name;
}
// Assume season 1 if there's no season folder and a season number could not be determined
- if (season == null && !episode.ParentIndexNumber.HasValue && (episode.IndexNumber.HasValue || episode.PremiereDate.HasValue))
+ if (season is null && !episode.ParentIndexNumber.HasValue && (episode.IndexNumber.HasValue || episode.PremiereDate.HasValue))
{
episode.ParentIndexNumber = 1;
}
diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs
index ea4851458..62a524d2e 100644
--- a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs
@@ -66,7 +66,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
var episodeInfo = resolver.Resolve(testPath, true);
- if (episodeInfo?.EpisodeNumber != null && episodeInfo.SeasonNumber.HasValue)
+ if (episodeInfo?.EpisodeNumber is not null && episodeInfo.SeasonNumber.HasValue)
{
_logger.LogDebug(
"Found folder underneath series with episode number: {0}. Season {1}. Episode {2}",
diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
index f5ac3c665..8f69175d0 100644
--- a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
@@ -76,7 +76,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
{
if (args.ContainsFileSystemEntryByName("tvshow.nfo"))
{
- if (args.Parent != null && args.Parent.IsRoot)
+ if (args.Parent is not null && args.Parent.IsRoot)
{
// For now, return null, but if we want to allow this in the future then add some additional checks to guard against a misplaced tvshow.nfo
return null;
@@ -89,7 +89,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
};
}
- if (args.Parent != null && args.Parent.IsRoot)
+ if (args.Parent is not null && args.Parent.IsRoot)
{
return null;
}
@@ -138,7 +138,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
var episodeResolver = new Naming.TV.EpisodeResolver(namingOptions);
var episodeInfo = episodeResolver.Resolve(fullName, false, true, false, fillExtendedInfo: false);
- if (episodeInfo != null && episodeInfo.EpisodeNumber.HasValue)
+ if (episodeInfo is not null && episodeInfo.EpisodeNumber.HasValue)
{
return true;
}
diff --git a/Emby.Server.Implementations/Library/SearchEngine.cs b/Emby.Server.Implementations/Library/SearchEngine.cs
index 60778a443..b916b9170 100644
--- a/Emby.Server.Implementations/Library/SearchEngine.cs
+++ b/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();
diff --git a/Emby.Server.Implementations/Library/UserDataManager.cs b/Emby.Server.Implementations/Library/UserDataManager.cs
index aecab7d9c..a0a90b129 100644
--- a/Emby.Server.Implementations/Library/UserDataManager.cs
+++ b/Emby.Server.Implementations/Library/UserDataManager.cs
@@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.Library
{
var userData = _repository.GetUserData(internalUserId, keys);
- if (userData != null)
+ if (userData is not null)
{
return userData;
}
diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs
index ec411aa3b..1137625f4 100644
--- a/Emby.Server.Implementations/Library/UserViewManager.cs
+++ b/Emby.Server.Implementations/Library/UserViewManager.cs
@@ -47,7 +47,7 @@ namespace Emby.Server.Implementations.Library
{
var user = _userManager.GetUserById(query.UserId);
- if (user == null)
+ if (user is null)
{
throw new ArgumentException("User Id specified in the query does not exist.", nameof(query));
}
@@ -72,7 +72,7 @@ namespace Emby.Server.Implementations.Library
continue;
}
- if (collectionFolder != null && UserView.IsEligibleForGrouping(folder) && user.IsFolderGrouped(folder.Id))
+ if (collectionFolder is not null && UserView.IsEligibleForGrouping(folder) && user.IsFolderGrouped(folder.Id))
{
groupedFolders.Add(collectionFolder);
continue;
@@ -208,15 +208,15 @@ namespace Emby.Server.Implementations.Library
// Only grab the index container for media
var container = item.IsFolder || !request.GroupItems ? null : item.LatestItemsIndexContainer;
- if (container == null)
+ if (container is null)
{
list.Add(new Tuple<BaseItem, List<BaseItem>>(null, new List<BaseItem> { item }));
}
else
{
- var current = list.FirstOrDefault(i => i.Item1 != null && i.Item1.Id.Equals(container.Id));
+ var current = list.FirstOrDefault(i => i.Item1 is not null && i.Item1.Id.Equals(container.Id));
- if (current != null)
+ if (current is not null)
{
current.Item2.Add(item);
}
diff --git a/Emby.Server.Implementations/Library/Validators/CollectionPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/CollectionPostScanTask.cs
index 88b93a211..df45793c3 100644
--- a/Emby.Server.Implementations/Library/Validators/CollectionPostScanTask.cs
+++ b/Emby.Server.Implementations/Library/Validators/CollectionPostScanTask.cs
@@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.Library.Validators
try
{
var boxSet = boxSets.FirstOrDefault(b => b?.Name == collectionName) as BoxSet;
- if (boxSet == null)
+ if (boxSet is null)
{
// won't automatically create collection if only one movie in it
if (movieIds.Count >= 2)
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs
index b2d25fdae..49833de73 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs
@@ -34,7 +34,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
public Task Record(IDirectStreamProvider? directStreamProvider, MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
{
- if (directStreamProvider != null)
+ if (directStreamProvider is not null)
{
return RecordFromDirectStreamProvider(directStreamProvider, targetFile, duration, onStarted, cancellationToken);
}
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index cf9be5a54..8f5fa8694 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -295,7 +295,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
var program = GetProgramInfoFromCache(timer);
- if (program == null)
+ if (program is null)
{
OnTimerOutOfDate(timer);
continue;
@@ -367,7 +367,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
var epgChannel = GetEpgChannelFromTunerChannel(info, tunerChannel, epgChannels);
- if (epgChannel != null)
+ if (epgChannel is not null)
{
if (!string.IsNullOrWhiteSpace(epgChannel.Name))
{
@@ -450,7 +450,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var channel = epgChannelData.GetChannelById(mappedTunerChannelId);
- if (channel != null)
+ if (channel is not null)
{
return channel;
}
@@ -473,7 +473,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var channel = epgChannelData.GetChannelById(mappedTunerChannelId);
- if (channel != null)
+ if (channel is not null)
{
return channel;
}
@@ -490,7 +490,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var channel = epgChannelData.GetChannelByNumber(tunerChannelNumber);
- if (channel != null)
+ if (channel is not null)
{
return channel;
}
@@ -502,7 +502,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var channel = epgChannelData.GetChannelByName(normalizedName);
- if (channel != null)
+ if (channel is not null)
{
return channel;
}
@@ -552,7 +552,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
var remove = _seriesTimerProvider.GetAll().FirstOrDefault(r => string.Equals(r.Id, timerId, StringComparison.OrdinalIgnoreCase));
- if (remove != null)
+ if (remove is not null)
{
_seriesTimerProvider.Delete(remove);
}
@@ -563,7 +563,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
private void CancelTimerInternal(string timerId, bool isSeriesCancelled, bool isManualCancellation)
{
var timer = _timerProvider.GetTimer(timerId);
- if (timer != null)
+ if (timer is not null)
{
var statusChanging = timer.Status != RecordingStatus.Cancelled;
timer.Status = RecordingStatus.Cancelled;
@@ -582,7 +582,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
_timerProvider.AddOrUpdate(timer, false);
}
- if (statusChanging && TimerCancelled != null)
+ if (statusChanging && TimerCancelled is not null)
{
TimerCancelled(this, new GenericEventArgs<string>(timerId));
}
@@ -617,7 +617,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
null :
_timerProvider.GetTimerByProgramId(info.ProgramId);
- if (existingTimer != null)
+ if (existingTimer is not null)
{
if (existingTimer.Status == RecordingStatus.Cancelled
|| existingTimer.Status == RecordingStatus.Completed)
@@ -642,13 +642,13 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
programInfo = GetProgramInfoFromCache(info);
}
- if (programInfo == null)
+ if (programInfo is null)
{
_logger.LogInformation("Unable to find program with Id {0}. Will search using start date", info.ProgramId);
programInfo = GetProgramInfoFromCache(info.ChannelId, info.StartDate);
}
- if (programInfo != null)
+ if (programInfo is not null)
{
CopyProgramInfoToTimerInfo(programInfo, info);
}
@@ -668,7 +668,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
// populate info.seriesID
var program = GetProgramInfoFromCache(info.ProgramId);
- if (program != null)
+ if (program is not null)
{
info.SeriesId = program.ExternalSeriesId;
}
@@ -714,7 +714,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
var instance = _seriesTimerProvider.GetAll().FirstOrDefault(i => string.Equals(i.Id, info.Id, StringComparison.OrdinalIgnoreCase));
- if (instance != null)
+ if (instance is not null)
{
instance.ChannelId = info.ChannelId;
instance.Days = info.Days;
@@ -744,7 +744,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
var existingTimer = _timerProvider.GetTimer(updatedTimer.Id);
- if (existingTimer == null)
+ if (existingTimer is null)
{
throw new ResourceNotFoundException();
}
@@ -861,7 +861,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
};
- if (program != null)
+ if (program is not null)
{
defaults.SeriesId = program.SeriesId;
defaults.ProgramId = program.Id;
@@ -912,7 +912,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var epgChannel = await GetEpgChannelFromTunerChannel(provider.Item1, provider.Item2, channel, cancellationToken).ConfigureAwait(false);
- if (epgChannel == null)
+ if (epgChannel is null)
{
_logger.LogDebug("EPG channel not found for tuner channel {0}-{1} from {2}-{3}", channel.Number, channel.Name, provider.Item1.Name, provider.Item2.ListingsId ?? string.Empty);
continue;
@@ -945,9 +945,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
var provider = _liveTvManager.ListingProviders.FirstOrDefault(l => string.Equals(l.Type, i.Type, StringComparison.OrdinalIgnoreCase));
- return provider == null ? null : new Tuple<IListingsProvider, ListingsProviderInfo>(provider, i);
+ return provider is null ? null : new Tuple<IListingsProvider, ListingsProviderInfo>(provider, i);
})
- .Where(i => i != null)
+ .Where(i => i is not null)
.ToList();
}
@@ -964,7 +964,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
null :
currentLiveStreams.FirstOrDefault(i => string.Equals(i.OriginalStreamId, streamId, StringComparison.OrdinalIgnoreCase));
- if (result != null && result.EnableStreamSharing)
+ if (result is not null && result.EnableStreamSharing)
{
result.ConsumerCount++;
@@ -1134,7 +1134,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
// trim trailing period from the folder name
var folderName = _fileSystem.GetValidFilename(timer.Name).Trim().TrimEnd('.').Trim();
- if (metadata != null && metadata.ProductionYear.HasValue)
+ if (metadata is not null && metadata.ProductionYear.HasValue)
{
folderName += " (" + metadata.ProductionYear.Value.ToString(CultureInfo.InvariantCulture) + ")";
}
@@ -1232,13 +1232,13 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
programInfo = GetProgramInfoFromCache(timer);
}
- if (programInfo == null)
+ if (programInfo is null)
{
_logger.LogInformation("Unable to find program with Id {0}. Will search using start date", timer.ProgramId);
programInfo = GetProgramInfoFromCache(timer.ChannelId, timer.StartDate);
}
- if (programInfo != null)
+ if (programInfo is not null)
{
CopyProgramInfoToTimerInfo(programInfo, timer);
}
@@ -1412,7 +1412,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var item = GetAffectedBaseItem(Path.GetDirectoryName(path));
- if (item != null)
+ if (item is not null)
{
_logger.LogInformation("Refreshing recording parent {Path}", item.Path);
@@ -1437,19 +1437,19 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var parentPath = Path.GetDirectoryName(path);
- while (item == null && !string.IsNullOrEmpty(path))
+ while (item is null && !string.IsNullOrEmpty(path))
{
item = _libraryManager.FindByPath(path, null);
path = Path.GetDirectoryName(path);
}
- if (item != null)
+ if (item is not null)
{
if (item.GetType() == typeof(Folder) && string.Equals(item.Path, parentPath, StringComparison.OrdinalIgnoreCase))
{
var parentItem = item.GetParent();
- if (parentItem != null && parentItem is not AggregateFolder)
+ if (parentItem is not null && parentItem is not AggregateFolder)
{
item = parentItem;
}
@@ -1474,7 +1474,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var seriesTimerId = timer.SeriesTimerId;
var seriesTimer = _seriesTimerProvider.GetAll().FirstOrDefault(i => string.Equals(i.Id, seriesTimerId, StringComparison.OrdinalIgnoreCase));
- if (seriesTimer == null || seriesTimer.KeepUpTo <= 0)
+ if (seriesTimer is null || seriesTimer.KeepUpTo <= 0)
{
return;
}
@@ -1569,7 +1569,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
var libraryItem = _libraryManager.FindByPath(timer.RecordingPath, false);
- if (libraryItem != null)
+ if (libraryItem is not null)
{
_libraryManager.DeleteItem(
libraryItem,
@@ -1695,7 +1695,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
_ => null
};
- if (imageSaveFilenameWithoutExtension == null)
+ if (imageSaveFilenameWithoutExtension is null)
{
return;
}
@@ -1714,7 +1714,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
(program.GetImageInfo(ImageType.Thumb, 0) ?? program.GetImageInfo(ImageType.Primary, 0)) :
(program.GetImageInfo(ImageType.Primary, 0) ?? program.GetImageInfo(ImageType.Thumb, 0));
- if (image != null)
+ if (image is not null)
{
try
{
@@ -1729,7 +1729,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
if (!program.IsSeries)
{
image = program.GetImageInfo(ImageType.Backdrop, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -1742,7 +1742,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
image = program.GetImageInfo(ImageType.Thumb, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -1755,7 +1755,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
image = program.GetImageInfo(ImageType.Logo, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -1782,7 +1782,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}).FirstOrDefault() as LiveTvProgram;
// dummy this up
- if (program == null)
+ if (program is null)
{
program = new LiveTvProgram
{
@@ -2240,7 +2240,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
? null
: _timerProvider.GetTimerByProgramId(timer.ProgramId));
- if (existingTimer == null)
+ if (existingTimer is null)
{
if (ShouldCancelTimerForSeriesTimer(seriesTimer, timer))
{
@@ -2367,13 +2367,13 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
DtoOptions = new DtoOptions()
}).FirstOrDefault() as LiveTvChannel;
- if (channel != null && !string.IsNullOrWhiteSpace(channel.ExternalId))
+ if (channel is not null && !string.IsNullOrWhiteSpace(channel.ExternalId))
{
tempChannelCache[parent.ChannelId] = channel;
}
}
- if (channel != null || tempChannelCache.TryGetValue(parent.ChannelId, out channel))
+ if (channel is not null || tempChannelCache.TryGetValue(parent.ChannelId, out channel))
{
channelId = channel.ExternalId;
}
@@ -2426,13 +2426,13 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
DtoOptions = new DtoOptions()
}).FirstOrDefault() as LiveTvChannel;
- if (channel != null && !string.IsNullOrWhiteSpace(channel.ExternalId))
+ if (channel is not null && !string.IsNullOrWhiteSpace(channel.ExternalId))
{
tempChannelCache[programInfo.ChannelId] = channel;
}
}
- if (channel != null || tempChannelCache.TryGetValue(programInfo.ChannelId, out channel))
+ if (channel is not null || tempChannelCache.TryGetValue(programInfo.ChannelId, out channel))
{
channelId = channel.ExternalId;
}
@@ -2626,7 +2626,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
var configuredDevice = configuredDevices.FirstOrDefault(i => string.Equals(i.DeviceId, device.DeviceId, StringComparison.OrdinalIgnoreCase));
- if (configuredDevice != null && !string.Equals(device.Url, configuredDevice.Url, StringComparison.OrdinalIgnoreCase))
+ if (configuredDevice is not null && !string.Equals(device.Url, configuredDevice.Url, StringComparison.OrdinalIgnoreCase))
{
_logger.LogInformation("Tuner url has changed from {PreviousUrl} to {NewUrl}", configuredDevice.Url, device.Url);
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
index 08534de59..5369c9b3d 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
@@ -208,7 +208,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
// var audioChannels = 2;
// var audioStream = mediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
- // if (audioStream != null)
+ // if (audioStream is not null)
// {
// audioChannels = audioStream.Channels ?? audioChannels;
// }
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs
index 58b798ce6..d5a6feb47 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs
@@ -36,7 +36,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
[MemberNotNull(nameof(_items))]
private void EnsureLoaded()
{
- if (_items != null)
+ if (_items is not null)
{
return;
}
@@ -49,7 +49,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
var bytes = File.ReadAllBytes(_dataPath);
_items = JsonSerializer.Deserialize<T[]>(bytes, _jsonOptions);
- if (_items == null)
+ if (_items is null)
{
Logger.LogError("Error deserializing {Path}, data was null", _dataPath);
_items = Array.Empty<T>();
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
index 40dcca94f..7bbeae866 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
@@ -63,7 +63,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
}
}
- else if (info.IsMovie && info.ProductionYear != null)
+ else if (info.IsMovie && info.ProductionYear is not null)
{
name += " (" + info.ProductionYear + ")";
}
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs
index b1259de23..bf28f3b67 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs
+++ b/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);
}
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs
index f612565d1..9f8441fa4 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs
+++ b/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);
@@ -165,7 +162,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var timerId = (string?)state ?? throw new ArgumentNullException(nameof(state));
var timer = GetAll().FirstOrDefault(i => string.Equals(i.Id, timerId, StringComparison.OrdinalIgnoreCase));
- if (timer != null)
+ if (timer is not null)
{
TimerFired?.Invoke(this, new GenericEventArgs<TimerInfo>(timer));
}
diff --git a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs b/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
index b981ad81a..3f7914d3b 100644
--- a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
+++ b/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');
@@ -111,7 +108,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
using var response = await Send(options, true, info, cancellationToken).ConfigureAwait(false);
await using var responseStream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
var dailySchedules = await JsonSerializer.DeserializeAsync<IReadOnlyList<DayDto>>(responseStream, _jsonOptions, cancellationToken).ConfigureAwait(false);
- if (dailySchedules == null)
+ if (dailySchedules is null)
{
return Array.Empty<ProgramInfo>();
}
@@ -127,7 +124,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
using var innerResponse = await Send(programRequestOptions, true, info, cancellationToken).ConfigureAwait(false);
await using var innerResponseStream = await innerResponse.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
var programDetails = await JsonSerializer.DeserializeAsync<IReadOnlyList<ProgramDetailsDto>>(innerResponseStream, _jsonOptions, cancellationToken).ConfigureAwait(false);
- if (programDetails == null)
+ if (programDetails is null)
{
return Array.Empty<ProgramInfo>();
}
@@ -153,7 +150,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
continue;
}
- if (images != null)
+ if (images is not null)
{
var imageIndex = images.FindIndex(i => i.ProgramId == schedule.ProgramId[..10]);
if (imageIndex > -1)
@@ -228,7 +225,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
private ProgramInfo GetProgram(string channelId, ProgramDto programInfo, ProgramDetailsDto details)
{
- if (programInfo.AirDateTime == null)
+ if (programInfo.AirDateTime is null)
{
return null;
}
@@ -266,7 +263,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
}
string episodeTitle = null;
- if (details.EpisodeTitle150 != null)
+ if (details.EpisodeTitle150 is not null)
{
episodeTitle = details.EpisodeTitle150;
}
@@ -283,7 +280,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
EpisodeTitle = episodeTitle,
Audio = audioType,
// IsNew = programInfo.@new ?? false,
- IsRepeat = programInfo.New == null,
+ IsRepeat = programInfo.New is null,
IsSeries = string.Equals(details.EntityType, "episode", StringComparison.OrdinalIgnoreCase),
ImageUrl = details.PrimaryImage,
ThumbImageUrl = details.ThumbImage,
@@ -315,13 +312,13 @@ namespace Emby.Server.Implementations.LiveTv.Listings
info.ShowId = showId;
- if (programInfo.VideoProperties != null)
+ if (programInfo.VideoProperties is not null)
{
info.IsHD = programInfo.VideoProperties.Contains("hdtv", StringComparison.OrdinalIgnoreCase);
info.Is3D = programInfo.VideoProperties.Contains("3d", StringComparison.OrdinalIgnoreCase);
}
- if (details.ContentRating != null && details.ContentRating.Count > 0)
+ if (details.ContentRating is not null && details.ContentRating.Count > 0)
{
info.OfficialRating = details.ContentRating[0].Code.Replace("TV", "TV-", StringComparison.Ordinal)
.Replace("--", "-", StringComparison.Ordinal);
@@ -333,13 +330,13 @@ namespace Emby.Server.Implementations.LiveTv.Listings
}
}
- if (details.Descriptions != null)
+ if (details.Descriptions is not null)
{
- if (details.Descriptions.Description1000 != null && details.Descriptions.Description1000.Count > 0)
+ if (details.Descriptions.Description1000 is not null && details.Descriptions.Description1000.Count > 0)
{
info.Overview = details.Descriptions.Description1000[0].Description;
}
- else if (details.Descriptions.Description100 != null && details.Descriptions.Description100.Count > 0)
+ else if (details.Descriptions.Description100 is not null && details.Descriptions.Description100.Count > 0)
{
info.Overview = details.Descriptions.Description100[0].Description;
}
@@ -351,12 +348,12 @@ namespace Emby.Server.Implementations.LiveTv.Listings
info.SeriesProviderIds[MetadataProvider.Zap2It.ToString()] = info.SeriesId;
- if (details.Metadata != null)
+ if (details.Metadata is not null)
{
foreach (var metadataProgram in details.Metadata)
{
var gracenote = metadataProgram.Gracenote;
- if (gracenote != null)
+ if (gracenote is not null)
{
info.SeasonNumber = gracenote.Season;
@@ -371,13 +368,13 @@ namespace Emby.Server.Implementations.LiveTv.Listings
}
}
- if (details.OriginalAirDate != null)
+ if (details.OriginalAirDate is not null)
{
info.OriginalAirDate = details.OriginalAirDate;
info.ProductionYear = info.OriginalAirDate.Value.Year;
}
- if (details.Movie != null)
+ if (details.Movie is not null)
{
if (!string.IsNullOrEmpty(details.Movie.Year)
&& int.TryParse(details.Movie.Year, out int year))
@@ -386,7 +383,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
}
}
- if (details.Genres != null)
+ if (details.Genres is not null)
{
info.Genres = details.Genres.Where(g => !string.IsNullOrWhiteSpace(g)).ToList();
info.IsNews = details.Genres.Contains("news", StringComparison.OrdinalIgnoreCase);
@@ -407,7 +404,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
.ThenByDescending(i => GetSizeOrder(i))
.FirstOrDefault();
- if (match == null)
+ if (match is null)
{
return null;
}
@@ -518,7 +515,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
var root = await JsonSerializer.DeserializeAsync<IReadOnlyList<HeadendsDto>>(response, _jsonOptions, cancellationToken).ConfigureAwait(false);
- if (root != null)
+ if (root is not null)
{
foreach (HeadendsDto headend in root)
{
@@ -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);
@@ -785,7 +753,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
using var httpResponse = await Send(options, true, info, cancellationToken).ConfigureAwait(false);
await using var stream = await httpResponse.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
var root = await JsonSerializer.DeserializeAsync<ChannelDto>(stream, _jsonOptions, cancellationToken).ConfigureAwait(false);
- if (root == null)
+ if (root is null)
{
return new List<ChannelInfo>();
}
@@ -814,7 +782,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
Name = string.IsNullOrWhiteSpace(station.Name) ? channelNumber : station.Name
};
- if (station.Logo != null)
+ if (station.Logo is not null)
{
channelInfo.ImageUrl = station.Logo.Url;
}
diff --git a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
index 264eec947..e874990da 100644
--- a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
+++ b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
@@ -151,9 +151,9 @@ namespace Emby.Server.Implementations.LiveTv.Listings
Overview = program.Description,
ProductionYear = program.CopyrightDate?.Year,
SeasonNumber = program.Episode?.Series,
- IsSeries = program.Episode != null,
+ IsSeries = program.Episode is not null,
IsRepeat = program.IsPreviouslyShown && !program.IsNew,
- IsPremiere = program.Premiere != null,
+ IsPremiere = program.Premiere is not null,
IsKids = program.Categories.Any(c => info.KidsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
IsMovie = program.Categories.Any(c => info.MovieCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
IsNews = program.Categories.Any(c => info.NewsCategories.Contains(c, StringComparison.OrdinalIgnoreCase)),
@@ -162,7 +162,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
HasImage = !string.IsNullOrEmpty(program.Icon?.Source),
OfficialRating = string.IsNullOrEmpty(program.Rating?.Value) ? null : program.Rating.Value,
CommunityRating = program.StarRating,
- SeriesId = program.Episode == null ? null : program.Title?.GetMD5().ToString("N", CultureInfo.InvariantCulture)
+ SeriesId = program.Episode is null ? null : program.Title?.GetMD5().ToString("N", CultureInfo.InvariantCulture)
};
if (string.IsNullOrWhiteSpace(program.ProgramId))
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
index c09f9cf8d..9326fbd5c 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -80,7 +80,7 @@ namespace Emby.Server.Implementations.LiveTv
dto.ProgramId = GetInternalProgramId(info.ProgramId).ToString("N", CultureInfo.InvariantCulture);
}
- if (program != null)
+ if (program is not null)
{
dto.ProgramInfo = _dtoService.GetBaseItemDto(program, new DtoOptions());
@@ -98,7 +98,7 @@ namespace Emby.Server.Implementations.LiveTv
}
}
- if (channel != null)
+ if (channel is not null)
{
dto.ChannelName = channel.Name;
@@ -150,7 +150,7 @@ namespace Emby.Server.Implementations.LiveTv
dto.ProgramId = GetInternalProgramId(info.ProgramId).ToString("N", CultureInfo.InvariantCulture);
}
- dto.DayPattern = info.Days == null ? null : GetDayPattern(info.Days.ToArray());
+ dto.DayPattern = info.Days is null ? null : GetDayPattern(info.Days.ToArray());
FillImages(dto, info.Name, info.SeriesId);
@@ -168,10 +168,10 @@ namespace Emby.Server.Implementations.LiveTv
DtoOptions = new DtoOptions(false)
}).FirstOrDefault();
- if (librarySeries != null)
+ if (librarySeries is not null)
{
var image = librarySeries.GetImageInfo(ImageType.Thumb, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.LiveTv
}
image = librarySeries.GetImageInfo(ImageType.Backdrop, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -212,10 +212,10 @@ namespace Emby.Server.Implementations.LiveTv
Name = string.IsNullOrEmpty(programSeriesId) ? seriesName : null
}).FirstOrDefault();
- if (program != null)
+ if (program is not null)
{
var image = program.GetImageInfo(ImageType.Primary, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -228,10 +228,10 @@ namespace Emby.Server.Implementations.LiveTv
}
}
- if (dto.ParentBackdropImageTags == null || dto.ParentBackdropImageTags.Length == 0)
+ if (dto.ParentBackdropImageTags is null || dto.ParentBackdropImageTags.Length == 0)
{
image = program.GetImageInfo(ImageType.Backdrop, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -262,10 +262,10 @@ namespace Emby.Server.Implementations.LiveTv
DtoOptions = new DtoOptions(false)
}).FirstOrDefault();
- if (librarySeries != null)
+ if (librarySeries is not null)
{
var image = librarySeries.GetImageInfo(ImageType.Thumb, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -279,7 +279,7 @@ namespace Emby.Server.Implementations.LiveTv
}
image = librarySeries.GetImageInfo(ImageType.Backdrop, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -305,7 +305,7 @@ namespace Emby.Server.Implementations.LiveTv
DtoOptions = new DtoOptions(false)
}).FirstOrDefault();
- if (program == null)
+ if (program is null)
{
program = _libraryManager.GetItemList(new InternalItemsQuery
{
@@ -318,10 +318,10 @@ namespace Emby.Server.Implementations.LiveTv
}).FirstOrDefault();
}
- if (program != null)
+ if (program is not null)
{
var image = program.GetImageInfo(ImageType.Primary, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -334,10 +334,10 @@ namespace Emby.Server.Implementations.LiveTv
}
}
- if (dto.ParentBackdropImageTags == null || dto.ParentBackdropImageTags.Length == 0)
+ if (dto.ParentBackdropImageTags is null || dto.ParentBackdropImageTags.Length == 0)
{
image = program.GetImageInfo(ImageType.Backdrop, 0);
- if (image != null)
+ if (image is not null)
{
try
{
@@ -460,7 +460,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var channel = _libraryManager.GetItemById(dto.ChannelId);
- if (channel != null)
+ if (channel is not null)
{
info.ChannelId = channel.ExternalId;
}
@@ -470,7 +470,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var program = _libraryManager.GetItemById(dto.ProgramId);
- if (program != null)
+ if (program is not null)
{
info.ProgramId = program.ExternalId;
}
@@ -480,7 +480,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var timer = await liveTv.GetSeriesTimer(dto.SeriesTimerId, cancellationToken).ConfigureAwait(false);
- if (timer != null)
+ if (timer is not null)
{
info.SeriesTimerId = timer.ExternalId;
}
@@ -526,7 +526,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var channel = _libraryManager.GetItemById(dto.ChannelId);
- if (channel != null)
+ if (channel is not null)
{
info.ChannelId = channel.ExternalId;
}
@@ -536,7 +536,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var program = _libraryManager.GetItemById(dto.ProgramId);
- if (program != null)
+ if (program is not null)
{
info.ProgramId = program.ExternalId;
}
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
index 97c2e6e30..7afc7959c 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -434,7 +434,7 @@ namespace Emby.Server.Implementations.LiveTv
var item = _libraryManager.GetItemById(id) as LiveTvChannel;
- if (item == null)
+ if (item is null)
{
item = new LiveTvChannel
{
@@ -446,7 +446,7 @@ namespace Emby.Server.Implementations.LiveTv
isNew = true;
}
- if (channelInfo.Tags != null)
+ if (channelInfo.Tags is not null)
{
if (!channelInfo.Tags.SequenceEqual(item.Tags, StringComparer.OrdinalIgnoreCase))
{
@@ -836,7 +836,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var seriesTimers = await GetSeriesTimersInternal(new SeriesTimerQuery(), cancellationToken).ConfigureAwait(false);
var seriesTimer = seriesTimers.Items.FirstOrDefault(i => string.Equals(_tvDtoService.GetInternalSeriesTimerId(i.Id).ToString("N", CultureInfo.InvariantCulture), query.SeriesTimerId, StringComparison.OrdinalIgnoreCase));
- if (seriesTimer != null)
+ if (seriesTimer is not null)
{
internalQuery.ExternalSeriesId = seriesTimer.SeriesId;
@@ -948,7 +948,7 @@ namespace Emby.Server.Implementations.LiveTv
var channel = _libraryManager.GetItemById(program.ChannelId);
- if (channel == null)
+ if (channel is null)
{
return score;
}
@@ -989,7 +989,7 @@ namespace Emby.Server.Implementations.LiveTv
var timer = timerList.FirstOrDefault(i => string.Equals(i.ProgramId, externalProgramId, StringComparison.OrdinalIgnoreCase));
var foundSeriesTimer = false;
- if (timer != null)
+ if (timer is not null)
{
if (timer.Status != RecordingStatus.Cancelled && timer.Status != RecordingStatus.Error)
{
@@ -1016,7 +1016,7 @@ namespace Emby.Server.Implementations.LiveTv
var seriesTimer = seriesTimerList.FirstOrDefault(i => string.Equals(i.SeriesId, externalSeriesId, StringComparison.OrdinalIgnoreCase));
- if (seriesTimer != null)
+ if (seriesTimer is not null)
{
program.SeriesTimerId = _tvDtoService.GetInternalSeriesTimerId(seriesTimer.Id)
.ToString("N", CultureInfo.InvariantCulture);
@@ -1086,7 +1086,7 @@ namespace Emby.Server.Implementations.LiveTv
var coreService = _services.OfType<EmbyTV.EmbyTV>().FirstOrDefault();
- if (coreService != null)
+ if (coreService is not null)
{
await coreService.RefreshSeriesTimers(cancellationToken).ConfigureAwait(false);
await coreService.RefreshTimers(cancellationToken).ConfigureAwait(false);
@@ -1280,7 +1280,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var item = _libraryManager.GetItemById(itemId);
- if (item != null)
+ if (item is not null)
{
_libraryManager.DeleteItem(
item,
@@ -1314,7 +1314,7 @@ namespace Emby.Server.Implementations.LiveTv
private QueryResult<BaseItem> GetEmbyRecordings(RecordingQuery query, DtoOptions dtoOptions, User user)
{
- if (user == null)
+ if (user is null)
{
return new QueryResult<BaseItem>();
}
@@ -1377,7 +1377,7 @@ namespace Emby.Server.Implementations.LiveTv
limit = null;
// var allActivePaths = EmbyTV.EmbyTV.Current.GetAllActiveRecordings().Select(i => i.Path).ToArray();
- // var items = allActivePaths.Select(i => _libraryManager.FindByPath(i, false)).Where(i => i != null).ToArray();
+ // var items = allActivePaths.Select(i => _libraryManager.FindByPath(i, false)).Where(i => i is not null).ToArray();
// return new QueryResult<BaseItem>
// {
@@ -1517,7 +1517,7 @@ namespace Emby.Server.Implementations.LiveTv
dto.CompletionPercentage = pct;
}
- if (channel != null)
+ if (channel is not null)
{
dto.ChannelName = channel.Name;
@@ -1702,7 +1702,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var timer = await GetTimer(id, CancellationToken.None).ConfigureAwait(false);
- if (timer == null)
+ if (timer is null)
{
throw new ResourceNotFoundException(string.Format(CultureInfo.InvariantCulture, "Timer with Id {0} not found", id));
}
@@ -1721,7 +1721,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var timer = await GetSeriesTimer(id, CancellationToken.None).ConfigureAwait(false);
- if (timer == null)
+ if (timer is null)
{
throw new ResourceNotFoundException(string.Format(CultureInfo.InvariantCulture, "SeriesTimer with Id {0} not found", id));
}
@@ -1834,7 +1834,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var internalChannelId = _tvDtoService.GetInternalChannelId(i.Item2.Name, i.Item1.ChannelId);
var channel = _libraryManager.GetItemById(internalChannelId);
- channelName = channel == null ? null : channel.Name;
+ channelName = channel is null ? null : channel.Name;
}
return _tvDtoService.GetSeriesTimerInfoDto(i.Item1, i.Item2, channelName);
@@ -1887,7 +1887,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var currentProgram = programs.FirstOrDefault(i => channel.Id.Equals(i.ChannelId));
- if (currentProgram != null)
+ if (currentProgram is not null)
{
currentProgramsList.Add(currentProgram);
}
@@ -1913,7 +1913,7 @@ namespace Emby.Server.Implementations.LiveTv
ILiveTvService service = null;
ProgramInfo programInfo = null;
- if (program != null)
+ if (program is not null)
{
service = GetService(program);
@@ -2147,7 +2147,7 @@ namespace Emby.Server.Implementations.LiveTv
var service = _services.FirstOrDefault(i => string.Equals(i.GetType().FullName.GetMD5().ToString("N", CultureInfo.InvariantCulture), parts[0], StringComparison.OrdinalIgnoreCase));
- if (service == null)
+ if (service is null)
{
throw new ArgumentException("Service not found.");
}
@@ -2178,7 +2178,7 @@ namespace Emby.Server.Implementations.LiveTv
var provider = _tunerHosts.FirstOrDefault(i => string.Equals(info.Type, i.Type, StringComparison.OrdinalIgnoreCase));
- if (provider == null)
+ if (provider is null)
{
throw new ResourceNotFoundException();
}
@@ -2222,7 +2222,7 @@ namespace Emby.Server.Implementations.LiveTv
var provider = _listingProviders.FirstOrDefault(i => string.Equals(info.Type, i.Type, StringComparison.OrdinalIgnoreCase));
- if (provider == null)
+ if (provider is null)
{
throw new ResourceNotFoundException(
string.Format(
@@ -2317,7 +2317,7 @@ namespace Emby.Server.Implementations.LiveTv
var providerChannel = EmbyTV.EmbyTV.Current.GetEpgChannelFromTunerChannel(mappings, tunerChannel, providerChannels);
- if (providerChannel != null)
+ if (providerChannel is not null)
{
result.ProviderChannelName = providerChannel.Name;
result.ProviderChannelId = providerChannel.Id;
@@ -2334,7 +2334,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var provider = _listingProviders.FirstOrDefault(i => string.Equals(providerType, i.Type, StringComparison.OrdinalIgnoreCase));
- if (provider == null)
+ if (provider is null)
{
throw new ResourceNotFoundException();
}
@@ -2347,7 +2347,7 @@ namespace Emby.Server.Implementations.LiveTv
var provider = _listingProviders.FirstOrDefault(i => string.Equals(info.Type, i.Type, StringComparison.OrdinalIgnoreCase));
- if (provider == null)
+ if (provider is null)
{
throw new ResourceNotFoundException();
}
@@ -2390,7 +2390,7 @@ namespace Emby.Server.Implementations.LiveTv
.SelectMany(i => i.Locations)
.Distinct(StringComparer.OrdinalIgnoreCase)
.Select(i => _libraryManager.FindByPath(i, true))
- .Where(i => i != null && i.IsVisibleStandalone(user))
+ .Where(i => i is not null && i.IsVisibleStandalone(user))
.SelectMany(i => _libraryManager.GetCollectionFolders(i))
.GroupBy(x => x.Id)
.Select(x => x.First())
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
index 4b7584af3..6a92fc599 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
@@ -42,7 +42,7 @@ namespace Emby.Server.Implementations.LiveTv
{
var activeRecordingInfo = _liveTvManager.GetActiveRecordingInfo(item.Path);
- if (string.IsNullOrEmpty(item.Path) || activeRecordingInfo != null)
+ if (string.IsNullOrEmpty(item.Path) || activeRecordingInfo is not null)
{
return GetMediaSourcesInternal(item, activeRecordingInfo, cancellationToken);
}
@@ -59,7 +59,7 @@ namespace Emby.Server.Implementations.LiveTv
try
{
- if (activeRecordingInfo != null)
+ if (activeRecordingInfo is not null)
{
sources = await EmbyTV.EmbyTV.Current.GetRecordingStreamMediaSources(activeRecordingInfo, cancellationToken)
.ConfigureAwait(false);
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs
index 2b82f2462..7b6c8b80a 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs
+++ b/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))
{
@@ -147,7 +144,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
var channels = await GetChannels(host, true, cancellationToken).ConfigureAwait(false);
var channelInfo = channels.FirstOrDefault(i => string.Equals(i.Id, channelId, StringComparison.OrdinalIgnoreCase));
- if (channelInfo != null)
+ if (channelInfo is not null)
{
return await GetChannelStreamMediaSources(host, channelInfo, cancellationToken).ConfigureAwait(false);
}
@@ -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))
{
@@ -187,7 +181,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
var channels = await GetChannels(host, true, cancellationToken).ConfigureAwait(false);
var channelInfo = channels.FirstOrDefault(i => string.Equals(i.Id, channelId, StringComparison.OrdinalIgnoreCase));
- if (channelInfo != null)
+ if (channelInfo is not null)
{
hostsWithChannel.Add(new Tuple<TunerHostInfo, ChannelInfo>(host, channelInfo));
}
@@ -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);
}
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
index e0eaa8e58..5327b3d74 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
@@ -302,7 +302,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var hdHomerunChannelInfo = channels.FirstOrDefault() as HdHomerunChannelInfo;
- if (hdHomerunChannelInfo == null || hdHomerunChannelInfo.IsLegacyTuner)
+ if (hdHomerunChannelInfo is null || hdHomerunChannelInfo.IsLegacyTuner)
{
return await GetTunerInfosUdp(info, cancellationToken).ConfigureAwait(false);
}
@@ -503,7 +503,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
var modelInfo = await GetModelInfo(tuner, false, cancellationToken).ConfigureAwait(false);
- if (modelInfo != null && modelInfo.SupportsTranscoding)
+ if (modelInfo is not null && modelInfo.SupportsTranscoding)
{
if (tuner.AllowHWTranscoding)
{
@@ -560,7 +560,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var mediaSource = GetMediaSource(tunerHost, hdhrId, channel, profile);
- if (hdhomerunChannel != null && hdhomerunChannel.IsLegacyTuner)
+ if (hdhomerunChannel is not null && hdhomerunChannel.IsLegacyTuner)
{
return new HdHomerunUdpStream(
mediaSource,
@@ -674,7 +674,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var info = await TryGetTunerHostInfo(deviceAddress, cancellationToken).ConfigureAwait(false);
- if (info != null)
+ if (info is not null)
{
list.Add(info);
}
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
index e67b5846a..81eb083f6 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
@@ -37,7 +37,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
using (var socket = _tcpClient)
{
- if (socket != null)
+ if (socket is not null)
{
_tcpClient = null;
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs
index 2748794b3..3ae9e256b 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs
@@ -35,7 +35,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
EnableStreamSharing = true;
UniqueId = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
- if (tuner != null)
+ if (tuner is not null)
{
TunerHostId = tuner.Id;
}
diff --git a/Emby.Server.Implementations/Localization/LocalizationManager.cs b/Emby.Server.Implementations/Localization/LocalizationManager.cs
index b77168126..b418c7877 100644
--- a/Emby.Server.Implementations/Localization/LocalizationManager.cs
+++ b/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);
@@ -329,14 +320,14 @@ namespace Emby.Server.Implementations.Localization
{
await using var stream = _assembly.GetManifestResourceStream(resourcePath);
// If a Culture doesn't have a translation the stream will be null and it defaults to en-us further up the chain
- if (stream == null)
+ if (stream is null)
{
_logger.LogError("Missing translation/culture resource: {ResourcePath}", resourcePath);
return;
}
var dict = await JsonSerializer.DeserializeAsync<Dictionary<string, string>>(stream, _jsonOptions).ConfigureAwait(false);
- if (dict == null)
+ if (dict is null)
{
throw new InvalidOperationException($"Resource contains invalid data: '{stream}'");
}
diff --git a/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs b/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs
index 6e1dc725d..9fe51f083 100644
--- a/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs
+++ b/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs
@@ -71,7 +71,7 @@ namespace Emby.Server.Implementations.MediaEncoder
}
var libraryOptions = _libraryManager.GetLibraryOptions(video);
- if (libraryOptions != null)
+ if (libraryOptions is not null)
{
if (!libraryOptions.EnableChapterImageExtraction)
{
diff --git a/Emby.Server.Implementations/Net/UdpSocket.cs b/Emby.Server.Implementations/Net/UdpSocket.cs
index c3994fc04..577b79283 100644
--- a/Emby.Server.Implementations/Net/UdpSocket.cs
+++ b/Emby.Server.Implementations/Net/UdpSocket.cs
@@ -74,7 +74,7 @@ namespace Emby.Server.Implementations.Net
private void OnReceiveSocketAsyncEventArgsCompleted(object sender, SocketAsyncEventArgs e)
{
var tcs = _currentReceiveTaskCompletionSource;
- if (tcs != null)
+ if (tcs is not null)
{
_currentReceiveTaskCompletionSource = null;
@@ -98,7 +98,7 @@ namespace Emby.Server.Implementations.Net
private void OnSendSocketAsyncEventArgsCompleted(object sender, SocketAsyncEventArgs e)
{
var tcs = _currentSendTaskCompletionSource;
- if (tcs != null)
+ if (tcs is not null)
{
_currentSendTaskCompletionSource = null;
diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
index 9e7035cb3..2717c392b 100644
--- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs
+++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
@@ -70,7 +70,7 @@ namespace Emby.Server.Implementations.Playlists
var folderName = _fileSystem.GetValidFilename(name);
var parentFolder = GetPlaylistsFolder(Guid.Empty);
- if (parentFolder == null)
+ if (parentFolder is null)
{
throw new ArgumentException(nameof(parentFolder));
}
@@ -81,7 +81,7 @@ namespace Emby.Server.Implementations.Playlists
{
var item = _libraryManager.GetItemById(itemId);
- if (item == null)
+ if (item is null)
{
throw new ArgumentException("No item exists with the supplied Id");
}
@@ -183,7 +183,7 @@ namespace Emby.Server.Implementations.Playlists
private List<BaseItem> GetPlaylistItems(IEnumerable<Guid> itemIds, string playlistMediaType, User user, DtoOptions options)
{
- var items = itemIds.Select(i => _libraryManager.GetItemById(i)).Where(i => i != null);
+ var items = itemIds.Select(i => _libraryManager.GetItemById(i)).Where(i => i is not null);
return Playlist.GetPlaylistItems(playlistMediaType, items, user, options);
}
@@ -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))
{
diff --git a/Emby.Server.Implementations/Playlists/PlaylistsFolder.cs b/Emby.Server.Implementations/Playlists/PlaylistsFolder.cs
index 8ec9f6161..e2f2e436f 100644
--- a/Emby.Server.Implementations/Playlists/PlaylistsFolder.cs
+++ b/Emby.Server.Implementations/Playlists/PlaylistsFolder.cs
@@ -39,7 +39,7 @@ namespace Emby.Server.Implementations.Playlists
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
{
- if (query.User == null)
+ if (query.User is null)
{
query.Recursive = false;
return base.GetItemsInternal(query);
diff --git a/Emby.Server.Implementations/Plugins/PluginManager.cs b/Emby.Server.Implementations/Plugins/PluginManager.cs
index 3f7d46822..14e7c2269 100644
--- a/Emby.Server.Implementations/Plugins/PluginManager.cs
+++ b/Emby.Server.Implementations/Plugins/PluginManager.cs
@@ -174,7 +174,7 @@ namespace Emby.Server.Implementations.Plugins
foreach (var pluginServiceRegistrator in _appHost.GetExportTypes<IPluginServiceRegistrator>())
{
var plugin = GetPluginByAssembly(pluginServiceRegistrator.Assembly);
- if (plugin == null)
+ if (plugin is null)
{
_logger.LogError("Unable to find plugin in assembly {Assembly}", pluginServiceRegistrator.Assembly.FullName);
continue;
@@ -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);
@@ -263,12 +260,12 @@ namespace Emby.Server.Implementations.Plugins
{
LocalPlugin? plugin;
- if (version == null)
+ if (version is null)
{
// If no version is given, return the current instance.
var plugins = _plugins.Where(p => p.Id.Equals(id)).ToList();
- plugin = plugins.FirstOrDefault(p => p.Instance != null) ?? plugins.OrderByDescending(p => p.Version).FirstOrDefault();
+ plugin = plugins.FirstOrDefault(p => p.Instance is not null) ?? plugins.OrderByDescending(p => p.Version).FirstOrDefault();
}
else
{
@@ -320,7 +317,7 @@ namespace Emby.Server.Implementations.Plugins
ArgumentNullException.ThrowIfNull(assembly);
var plugin = _plugins.FirstOrDefault(p => p.DllFiles.Contains(assembly.Location));
- if (plugin == null)
+ if (plugin is null)
{
// A plugin's assembly didn't cause this issue, so ignore it.
return;
@@ -442,7 +439,7 @@ namespace Emby.Server.Implementations.Plugins
_logger.LogDebug("Creating instance of {Type}", type);
// _appHost.ServiceProvider is already assigned when we create the plugins
var instance = (IPlugin)ActivatorUtilities.CreateInstance(_appHost.ServiceProvider!, type);
- if (plugin == null)
+ if (plugin is null)
{
// Create a dummy record for the providers.
// TODO: remove this code once all provided have been released as separate plugins.
@@ -500,7 +497,7 @@ namespace Emby.Server.Implementations.Plugins
#pragma warning restore CA1031 // Do not catch general exception types
{
_logger.LogError(ex, "Error creating {Type}", type.FullName);
- if (plugin != null)
+ if (plugin is not null)
{
if (ChangePluginState(plugin, PluginStatus.Malfunctioned))
{
@@ -523,7 +520,7 @@ namespace Emby.Server.Implementations.Plugins
var predecessor = _plugins.OrderByDescending(p => p.Version)
.FirstOrDefault(p => p.Id.Equals(plugin.Id) && p.IsEnabledAndSupported && p.Version != plugin.Version);
- if (predecessor != null)
+ if (predecessor is not null)
{
return;
}
@@ -577,7 +574,7 @@ namespace Emby.Server.Implementations.Plugins
_logger.LogError(ex, "Error deserializing {Json}.", Encoding.UTF8.GetString(data!));
}
- if (manifest != null)
+ if (manifest is not null)
{
if (!Version.TryParse(manifest.TargetAbi, out var targetAbi))
{
@@ -711,7 +708,7 @@ namespace Emby.Server.Implementations.Plugins
&& p.IsEnabledAndSupported
&& p.Version != plugin.Version);
- if (previousVersion == null)
+ if (previousVersion is null)
{
// This value is memory only - so that the web will show restart required.
plugin.Manifest.Status = PluginStatus.Restart;
diff --git a/Emby.Server.Implementations/QuickConnect/QuickConnectManager.cs b/Emby.Server.Implementations/QuickConnect/QuickConnectManager.cs
index 532c8d1e3..c4bda9637 100644
--- a/Emby.Server.Implementations/QuickConnect/QuickConnectManager.cs
+++ b/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();
diff --git a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index b370e06ef..ee9aa8569 100644
--- a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -128,7 +128,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
lock (_lastExecutionResultSyncLock)
{
- if (_lastExecutionResult == null && !_readFromFile)
+ if (_lastExecutionResult is null && !_readFromFile)
{
if (File.Exists(path))
{
@@ -211,7 +211,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
get
{
- if (CurrentCancellationTokenSource != null)
+ if (CurrentCancellationTokenSource is not null)
{
return CurrentCancellationTokenSource.IsCancellationRequested
? TaskState.Cancelling
@@ -240,7 +240,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
ArgumentNullException.ThrowIfNull(value);
// Cleanup current triggers
- if (_triggers != null)
+ if (_triggers is not null)
{
DisposeTriggers();
}
@@ -269,7 +269,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
ArgumentNullException.ThrowIfNull(value);
// This null check is not great, but is needed to handle bad user input, or user mucking with the config file incorrectly
- var triggerList = value.Where(i => i != null).ToArray();
+ var triggerList = value.Where(i => i is not null).ToArray();
SaveTriggers(triggerList);
@@ -369,7 +369,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
private async Task ExecuteInternal(TaskOptions options)
{
// Cancel the current execution, if any
- if (CurrentCancellationTokenSource != null)
+ if (CurrentCancellationTokenSource is not null)
{
throw new InvalidOperationException("Cannot execute a Task that is already running");
}
@@ -391,7 +391,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
try
{
- if (options != null && options.MaxRuntimeTicks.HasValue)
+ if (options is not null && options.MaxRuntimeTicks.HasValue)
{
CurrentCancellationTokenSource.CancelAfter(TimeSpan.FromTicks(options.MaxRuntimeTicks.Value));
}
@@ -507,7 +507,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
private Tuple<TaskTriggerInfo, ITaskTrigger>[] LoadTriggers()
{
// This null check is not great, but is needed to handle bad user input, or user mucking with the config file incorrectly
- var settings = LoadTriggerSettings().Where(i => i != null).ToArray();
+ var settings = LoadTriggerSettings().Where(i => i is not null).ToArray();
return settings.Select(i => new Tuple<TaskTriggerInfo, ITaskTrigger>(i, GetTrigger(i))).ToArray();
}
@@ -583,7 +583,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
result.Key = ScheduledTask.Key;
- if (ex != null)
+ if (ex is not null)
{
result.ErrorMessage = ex.Message;
result.LongErrorMessage = ex.StackTrace;
@@ -617,7 +617,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
var startTime = CurrentExecutionStartTime;
var token = CurrentCancellationTokenSource;
- if (token != null)
+ if (token is not null)
{
try
{
@@ -631,7 +631,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
}
var task = _currentTask;
- if (task != null)
+ if (task is not null)
{
try
{
@@ -653,7 +653,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
}
}
- if (token != null)
+ if (token is not null)
{
try
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
index 0431858fc..63f0beb10 100644
--- a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
@@ -94,7 +94,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == typeof(T));
- if (scheduledTask == null)
+ if (scheduledTask is null)
{
_logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", typeof(T).Name);
}
@@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == typeof(T));
- if (scheduledTask == null)
+ if (scheduledTask is null)
{
_logger.LogError("Unable to find scheduled task of type {0} in Execute.", typeof(T).Name);
}
@@ -155,7 +155,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
var scheduledTask = ScheduledTasks.FirstOrDefault(t => t.ScheduledTask.GetType() == task.GetType());
- if (scheduledTask == null)
+ if (scheduledTask is null)
{
_logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", task.GetType().Name);
}
diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/ChapterImagesTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/ChapterImagesTask.cs
index da7c8732a..abc203618 100644
--- a/Emby.Server.Implementations/ScheduledTasks/Tasks/ChapterImagesTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/ChapterImagesTask.cs
@@ -151,7 +151,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
previouslyFailedImages.Add(key);
var parentPath = Path.GetDirectoryName(failHistoryPath);
- if (parentPath != null)
+ if (parentPath is not null)
{
Directory.CreateDirectory(parentPath);
}
diff --git a/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs
index 3eb800199..d65ac2e5e 100644
--- a/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Triggers/IntervalTrigger.cs
@@ -50,7 +50,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
DateTime triggerDate;
- if (lastResult == null)
+ if (lastResult is null)
{
// Task has never been completed before
triggerDate = DateTime.UtcNow.AddHours(1);
@@ -100,7 +100,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
{
DisposeTimer();
- if (Triggered != null)
+ if (Triggered is not null)
{
_lastStartDate = DateTime.UtcNow;
Triggered(this, EventArgs.Empty);
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs
index 0d1029882..2f60d01a9 100644
--- a/Emby.Server.Implementations/Session/SessionManager.cs
+++ b/Emby.Server.Implementations/Session/SessionManager.cs
@@ -200,7 +200,7 @@ namespace Emby.Server.Implementations.Session
{
var capabilities = _deviceManager.GetCapabilities(info.DeviceId);
- if (capabilities != null)
+ if (capabilities is not null)
{
ReportCapabilities(info, capabilities, false);
}
@@ -238,7 +238,7 @@ namespace Emby.Server.Implementations.Session
public void UpdateDeviceName(string sessionId, string reportedDeviceName)
{
var session = GetSession(sessionId);
- if (session != null)
+ if (session is not null)
{
session.DeviceName = reportedDeviceName;
}
@@ -264,27 +264,16 @@ 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);
var lastActivityDate = session.LastActivityDate;
session.LastActivityDate = activityDate;
- if (user != null)
+ if (user is not null)
{
var userLastActivityDate = user.LastActivityDate ?? DateTime.MinValue;
@@ -351,7 +340,7 @@ namespace Emby.Server.Implementations.Session
CheckDisposed();
var session = GetSession(sessionId, false);
- if (session != null)
+ if (session is not null)
{
var key = GetSessionKey(session.Client, session.DeviceId);
@@ -377,11 +366,11 @@ namespace Emby.Server.Implementations.Session
info.MediaSourceId = info.ItemId.ToString("N", CultureInfo.InvariantCulture);
}
- if (!info.ItemId.Equals(default) && info.Item == null && libraryItem != null)
+ if (!info.ItemId.Equals(default) && info.Item is null && libraryItem is not null)
{
var current = session.NowPlayingItem;
- if (current == null || !info.ItemId.Equals(current.Id))
+ if (current is null || !info.ItemId.Equals(current.Id))
{
var runtimeTicks = libraryItem.RunTimeTicks;
@@ -390,7 +379,7 @@ namespace Emby.Server.Implementations.Session
{
mediaSource = await GetMediaSource(libraryItem, info.MediaSourceId, info.LiveStreamId).ConfigureAwait(false);
- if (mediaSource != null)
+ if (mediaSource is not null)
{
runtimeTicks = mediaSource.RunTimeTicks;
}
@@ -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);
@@ -495,7 +481,7 @@ namespace Emby.Server.Implementations.Session
sessionInfo.UserId = user?.Id ?? Guid.Empty;
sessionInfo.UserName = user?.Username;
- sessionInfo.UserPrimaryImageTag = user?.ProfileImage == null ? null : GetImageCacheTag(user);
+ sessionInfo.UserPrimaryImageTag = user?.ProfileImage is null ? null : GetImageCacheTag(user);
sessionInfo.RemoteEndPoint = remoteEndPoint;
sessionInfo.Client = appName;
@@ -506,7 +492,7 @@ namespace Emby.Server.Implementations.Session
sessionInfo.ApplicationVersion = appVersion;
- if (user == null)
+ if (user is null)
{
sessionInfo.AdditionalUsers = Array.Empty<SessionUserInfo>();
}
@@ -536,7 +522,7 @@ namespace Emby.Server.Implementations.Session
sessionInfo.UserId = user?.Id ?? Guid.Empty;
sessionInfo.UserName = username;
- sessionInfo.UserPrimaryImageTag = user?.ProfileImage == null ? null : GetImageCacheTag(user);
+ sessionInfo.UserPrimaryImageTag = user?.ProfileImage is null ? null : GetImageCacheTag(user);
sessionInfo.RemoteEndPoint = remoteEndPoint;
if (string.IsNullOrEmpty(deviceName))
@@ -570,7 +556,7 @@ namespace Emby.Server.Implementations.Session
var user = _userManager.GetUserById(session.UserId);
- if (user == null)
+ if (user is null)
{
throw new InvalidOperationException("User not found");
}
@@ -579,7 +565,7 @@ namespace Emby.Server.Implementations.Session
users.AddRange(session.AdditionalUsers
.Select(i => _userManager.GetUserById(i.UserId))
- .Where(i => i != null));
+ .Where(i => i is not null));
return users;
}
@@ -591,7 +577,7 @@ namespace Emby.Server.Implementations.Session
private void StopIdleCheckTimer()
{
- if (_idleTimer != null)
+ if (_idleTimer is not null)
{
_idleTimer.Dispose();
_idleTimer = null;
@@ -600,7 +586,7 @@ namespace Emby.Server.Implementations.Session
private async void CheckForIdlePlayback(object state)
{
- var playingSessions = Sessions.Where(i => i.NowPlayingItem != null)
+ var playingSessions = Sessions.Where(i => i.NowPlayingItem is not null)
.ToList();
if (playingSessions.Count > 0)
@@ -618,7 +604,7 @@ namespace Emby.Server.Implementations.Session
await OnPlaybackStopped(new PlaybackStopInfo
{
Item = session.NowPlayingItem,
- ItemId = session.NowPlayingItem == null ? Guid.Empty : session.NowPlayingItem.Id,
+ ItemId = session.NowPlayingItem is null ? Guid.Empty : session.NowPlayingItem.Id,
SessionId = session.Id,
MediaSourceId = session.PlayState?.MediaSourceId,
PositionTicks = session.PlayState?.PositionTicks
@@ -630,7 +616,7 @@ namespace Emby.Server.Implementations.Session
}
}
- playingSessions = Sessions.Where(i => i.NowPlayingItem != null)
+ playingSessions = Sessions.Where(i => i.NowPlayingItem is not null)
.ToList();
}
@@ -643,7 +629,7 @@ namespace Emby.Server.Implementations.Session
private BaseItem GetNowPlayingItem(SessionInfo session, Guid itemId)
{
var item = session.FullNowPlayingItem;
- if (item != null && item.Id.Equals(itemId))
+ if (item is not null && item.Id.Equals(itemId))
{
return item;
}
@@ -684,7 +670,7 @@ namespace Emby.Server.Implementations.Session
var users = GetUsers(session);
- if (libraryItem != null)
+ if (libraryItem is not null)
{
foreach (var user in users)
{
@@ -777,7 +763,7 @@ namespace Emby.Server.Implementations.Session
var users = GetUsers(session);
// only update saved user data on actual check-ins, not automated ones
- if (libraryItem != null && !isAutomated)
+ if (libraryItem is not null && !isAutomated)
{
foreach (var user in users)
{
@@ -912,11 +898,11 @@ namespace Emby.Server.Implementations.Session
info.MediaSourceId = info.ItemId.ToString("N", CultureInfo.InvariantCulture);
}
- if (!info.ItemId.Equals(default) && info.Item == null && libraryItem != null)
+ if (!info.ItemId.Equals(default) && info.Item is null && libraryItem is not null)
{
var current = session.NowPlayingItem;
- if (current == null || !info.ItemId.Equals(current.Id))
+ if (current is null || !info.ItemId.Equals(current.Id))
{
MediaSourceInfo mediaSource = null;
@@ -933,7 +919,7 @@ namespace Emby.Server.Implementations.Session
}
}
- if (info.Item != null)
+ if (info.Item is not null)
{
var msString = info.PositionTicks.HasValue ? (info.PositionTicks.Value / 10000).ToString(CultureInfo.InvariantCulture) : "unknown";
@@ -945,7 +931,7 @@ namespace Emby.Server.Implementations.Session
msString);
}
- if (info.NowPlayingQueue != null)
+ if (info.NowPlayingQueue is not null)
{
session.NowPlayingQueue = info.NowPlayingQueue;
}
@@ -957,7 +943,7 @@ namespace Emby.Server.Implementations.Session
var users = GetUsers(session);
var playedToCompletion = false;
- if (libraryItem != null)
+ if (libraryItem is not null)
{
foreach (var user in users)
{
@@ -1037,7 +1023,7 @@ namespace Emby.Server.Implementations.Session
private SessionInfo GetSession(string sessionId, bool throwOnMissing = true)
{
var session = Sessions.FirstOrDefault(i => string.Equals(i.Id, sessionId, StringComparison.Ordinal));
- if (session == null && throwOnMissing)
+ if (session is null && throwOnMissing)
{
throw new ResourceNotFoundException(
string.Format(CultureInfo.InvariantCulture, "Session {0} not found.", sessionId));
@@ -1051,7 +1037,7 @@ namespace Emby.Server.Implementations.Session
// Accept either device id or session id
var session = Sessions.FirstOrDefault(i => string.Equals(i.Id, sessionId, StringComparison.Ordinal));
- if (session == null)
+ if (session is null)
{
throw new ResourceNotFoundException(
string.Format(CultureInfo.InvariantCulture, "Session {0} not found.", sessionId));
@@ -1164,7 +1150,7 @@ namespace Emby.Server.Implementations.Session
command.ItemIds = items.Select(i => i.Id).ToArray();
- if (user != null)
+ if (user is not null)
{
if (items.Any(i => i.GetPlayAccess(user) != PlayAccess.Full))
{
@@ -1173,13 +1159,13 @@ namespace Emby.Server.Implementations.Session
}
}
- if (user != null
+ if (user is not null
&& command.ItemIds.Length == 1
&& user.EnableNextEpisodeAutoPlay
&& _libraryManager.GetItemById(command.ItemIds[0]) is Episode episode)
{
var series = episode.Series;
- if (series != null)
+ if (series is not null)
{
var episodes = series.GetEpisodes(
user,
@@ -1231,7 +1217,7 @@ namespace Emby.Server.Implementations.Session
{
var item = _libraryManager.GetItemById(id);
- if (item == null)
+ if (item is null)
{
_logger.LogError("A non-existent item Id {0} was passed into TranslateItemForPlayback", id);
return Array.Empty<BaseItem>();
@@ -1284,7 +1270,7 @@ namespace Emby.Server.Implementations.Session
{
var item = _libraryManager.GetItemById(id);
- if (item == null)
+ if (item is null)
{
_logger.LogError("A non-existent item Id {0} was passed into TranslateItemForInstantMix", id);
return new List<BaseItem>();
@@ -1429,7 +1415,7 @@ namespace Emby.Server.Implementations.Session
var user = session.AdditionalUsers.FirstOrDefault(i => i.UserId.Equals(userId));
- if (user != null)
+ if (user is not null)
{
var list = session.AdditionalUsers.ToList();
list.Remove(user);
@@ -1480,7 +1466,7 @@ namespace Emby.Server.Implementations.Session
true).ConfigureAwait(false);
}
- if (user == null)
+ if (user is null)
{
AuthenticationFailed?.Invoke(this, new GenericEventArgs<AuthenticationRequest>(request));
throw new AuthenticationException("Invalid username or password entered.");
@@ -1541,7 +1527,7 @@ namespace Emby.Server.Implementations.Session
foreach (var auth in allExistingForDevice)
{
- if (existing == null || !string.Equals(auth.AccessToken, existing.AccessToken, StringComparison.Ordinal))
+ if (existing is null || !string.Equals(auth.AccessToken, existing.AccessToken, StringComparison.Ordinal))
{
try
{
@@ -1554,7 +1540,7 @@ namespace Emby.Server.Implementations.Session
}
}
- if (existing != null)
+ if (existing is not null)
{
_logger.LogInformation("Reissuing access token: {Token}", existing.AccessToken);
return existing.AccessToken;
@@ -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
@@ -1677,7 +1660,7 @@ namespace Emby.Server.Implementations.Session
var dtoOptions = _itemInfoDtoOptions;
- if (_itemInfoDtoOptions == null)
+ if (_itemInfoDtoOptions is null)
{
dtoOptions = new DtoOptions
{
@@ -1720,7 +1703,7 @@ namespace Emby.Server.Implementations.Session
var info = _dtoService.GetBaseItemDto(item, dtoOptions);
- if (mediaSource != null)
+ if (mediaSource is not null)
{
info.MediaStreams = mediaSource.MediaStreams.ToArray();
}
@@ -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);
@@ -1761,7 +1741,7 @@ namespace Emby.Server.Implementations.Session
var session = Sessions.FirstOrDefault(i =>
string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase));
- if (session != null)
+ if (session is not null)
{
session.TranscodingInfo = info;
}
diff --git a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
index c654828b1..aebb55907 100644
--- a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
+++ b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
@@ -94,7 +94,7 @@ namespace Emby.Server.Implementations.Session
public async Task ProcessWebSocketConnectedAsync(IWebSocketConnection connection, HttpContext httpContext)
{
var session = await GetSession(httpContext, connection.RemoteEndPoint?.ToString()).ConfigureAwait(false);
- if (session != null)
+ if (session is not null)
{
EnsureController(session, connection);
await KeepAliveWebSocket(connection).ConfigureAwait(false);
@@ -202,7 +202,7 @@ namespace Emby.Server.Implementations.Session
{
lock (_keepAliveLock)
{
- if (_keepAliveCancellationToken == null)
+ if (_keepAliveCancellationToken is null)
{
_keepAliveCancellationToken = new CancellationTokenSource();
// Start KeepAlive watcher
@@ -221,7 +221,7 @@ namespace Emby.Server.Implementations.Session
{
lock (_keepAliveLock)
{
- if (_keepAliveCancellationToken != null)
+ if (_keepAliveCancellationToken is not null)
{
_keepAliveCancellationToken.Cancel();
_keepAliveCancellationToken.Dispose();
diff --git a/Emby.Server.Implementations/Session/WebSocketController.cs b/Emby.Server.Implementations/Session/WebSocketController.cs
index 1f3248f07..051fa5b3c 100644
--- a/Emby.Server.Implementations/Session/WebSocketController.cs
+++ b/Emby.Server.Implementations/Session/WebSocketController.cs
@@ -73,7 +73,7 @@ namespace Emby.Server.Implementations.Session
.OrderByDescending(i => i.LastActivityDate)
.FirstOrDefault();
- if (socket == null)
+ if (socket is null)
{
return Task.CompletedTask;
}
diff --git a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs
index 2d21bd9c2..964004ecc 100644
--- a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs
+++ b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs
@@ -31,9 +31,9 @@ namespace Emby.Server.Implementations.Sorting
var episode1 = x as Episode;
var episode2 = y as Episode;
- if (episode1 == null)
+ if (episode1 is null)
{
- if (episode2 == null)
+ if (episode2 is null)
{
return 0;
}
@@ -41,7 +41,7 @@ namespace Emby.Server.Implementations.Sorting
return 1;
}
- if (episode2 == null)
+ if (episode2 is null)
{
return -1;
}
diff --git a/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs b/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs
index ec818253b..453d817c7 100644
--- a/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs
+++ b/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs
@@ -58,7 +58,7 @@ namespace Emby.Server.Implementations.Sorting
{
var userdata = UserDataRepository.GetUserData(User, x);
- if (userdata != null && userdata.LastPlayedDate.HasValue)
+ if (userdata is not null && userdata.LastPlayedDate.HasValue)
{
return userdata.LastPlayedDate.Value;
}
diff --git a/Emby.Server.Implementations/Sorting/PlayCountComparer.cs b/Emby.Server.Implementations/Sorting/PlayCountComparer.cs
index 45c9044c5..16f1b79b3 100644
--- a/Emby.Server.Implementations/Sorting/PlayCountComparer.cs
+++ b/Emby.Server.Implementations/Sorting/PlayCountComparer.cs
@@ -57,7 +57,7 @@ namespace Emby.Server.Implementations.Sorting
{
var userdata = UserDataRepository.GetUserData(User, x);
- return userdata == null ? 0 : userdata.PlayCount;
+ return userdata is null ? 0 : userdata.PlayCount;
}
}
}
diff --git a/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs b/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs
index b217556ef..db86b8002 100644
--- a/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs
+++ b/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs
@@ -34,7 +34,7 @@ namespace Emby.Server.Implementations.Sorting
/// <returns>DateTime.</returns>
private static DateTime GetDate(BaseItem? x)
{
- if (x == null)
+ if (x is null)
{
return DateTime.MinValue;
}
diff --git a/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs b/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs
index d2022df7a..7fd1e024d 100644
--- a/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs
+++ b/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs
@@ -33,7 +33,7 @@ namespace Emby.Server.Implementations.Sorting
/// <returns>DateTime.</returns>
private static int GetValue(BaseItem? x)
{
- if (x == null)
+ if (x is null)
{
return 0;
}
diff --git a/Emby.Server.Implementations/SyncPlay/Group.cs b/Emby.Server.Implementations/SyncPlay/Group.cs
index 52becfec6..7d7ea5810 100644
--- a/Emby.Server.Implementations/SyncPlay/Group.cs
+++ b/Emby.Server.Implementations/SyncPlay/Group.cs
@@ -197,7 +197,7 @@ namespace Emby.Server.Implementations.SyncPlay
private bool HasAccessToQueue(User user, IReadOnlyList<Guid> queue)
{
// Check if queue is empty.
- if (queue == null || queue.Count == 0)
+ if (queue is null || queue.Count == 0)
{
return true;
}
@@ -217,7 +217,7 @@ namespace Emby.Server.Implementations.SyncPlay
private bool AllUsersHaveAccessToQueue(IReadOnlyList<Guid> queue)
{
// Check if queue is empty.
- if (queue == null || queue.Count == 0)
+ if (queue is null || queue.Count == 0)
{
return true;
}
@@ -251,7 +251,7 @@ namespace Emby.Server.Implementations.SyncPlay
GroupName = request.GroupName;
AddSession(session);
- var sessionIsPlayingAnItem = session.FullNowPlayingItem != null;
+ var sessionIsPlayingAnItem = session.FullNowPlayingItem is not null;
RestartCurrentItem();
diff --git a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs
index 53e3b3577..63c4a1556 100644
--- a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs
+++ b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs
@@ -102,12 +102,12 @@ namespace Emby.Server.Implementations.SyncPlay
/// <inheritdoc />
public void NewGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken)
{
- if (session == null)
+ if (session is null)
{
throw new InvalidOperationException("Session is null!");
}
- if (request == null)
+ if (request is null)
{
throw new InvalidOperationException("Request is null!");
}
@@ -138,12 +138,12 @@ namespace Emby.Server.Implementations.SyncPlay
/// <inheritdoc />
public void JoinGroup(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken)
{
- if (session == null)
+ if (session is null)
{
throw new InvalidOperationException("Session is null!");
}
- if (request == null)
+ if (request is null)
{
throw new InvalidOperationException("Request is null!");
}
@@ -155,7 +155,7 @@ namespace Emby.Server.Implementations.SyncPlay
{
_groups.TryGetValue(request.GroupId, out Group group);
- if (group == null)
+ if (group is null)
{
_logger.LogWarning("Session {SessionId} tried to join group {GroupId} that does not exist.", session.Id, request.GroupId);
@@ -204,12 +204,12 @@ namespace Emby.Server.Implementations.SyncPlay
/// <inheritdoc />
public void LeaveGroup(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken)
{
- if (session == null)
+ if (session is null)
{
throw new InvalidOperationException("Session is null!");
}
- if (request == null)
+ if (request is null)
{
throw new InvalidOperationException("Request is null!");
}
@@ -257,12 +257,12 @@ namespace Emby.Server.Implementations.SyncPlay
/// <inheritdoc />
public List<GroupInfoDto> ListGroups(SessionInfo session, ListGroupsRequest request)
{
- if (session == null)
+ if (session is null)
{
throw new InvalidOperationException("Session is null!");
}
- if (request == null)
+ if (request is null)
{
throw new InvalidOperationException("Request is null!");
}
@@ -291,12 +291,12 @@ namespace Emby.Server.Implementations.SyncPlay
/// <inheritdoc />
public void HandleRequest(SessionInfo session, IGroupPlaybackRequest request, CancellationToken cancellationToken)
{
- if (session == null)
+ if (session is null)
{
throw new InvalidOperationException("Session is null!");
}
- if (request == null)
+ if (request is null)
{
throw new InvalidOperationException("Request is null!");
}
diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs
index 5c9b9df15..967f90b55 100644
--- a/Emby.Server.Implementations/TV/TVSeriesManager.cs
+++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs
@@ -37,7 +37,7 @@ namespace Emby.Server.Implementations.TV
{
var user = _userManager.GetUserById(query.UserId);
- if (user == null)
+ if (user is null)
{
throw new ArgumentException("User not found");
}
@@ -62,7 +62,7 @@ namespace Emby.Server.Implementations.TV
{
var parent = _libraryManager.GetItemById(query.ParentId.Value);
- if (parent != null)
+ if (parent is not null)
{
parents = new[] { parent };
}
@@ -86,7 +86,7 @@ namespace Emby.Server.Implementations.TV
{
var user = _userManager.GetUserById(request.UserId);
- if (user == null)
+ if (user is null)
{
throw new ArgumentException("User not found");
}
@@ -168,7 +168,7 @@ namespace Emby.Server.Implementations.TV
return !anyFound && i.LastWatchedDate == DateTime.MinValue;
})
.Select(i => i.GetEpisodeFunction())
- .Where(i => i != null);
+ .Where(i => i is not null);
}
private static string GetUniqueSeriesKey(Episode episode)
@@ -247,23 +247,23 @@ namespace Emby.Server.Implementations.TV
DtoOptions = dtoOptions
})
.Cast<Episode>()
- .Where(episode => episode.AirsBeforeSeasonNumber != null || episode.AirsAfterSeasonNumber != null)
+ .Where(episode => episode.AirsBeforeSeasonNumber is not null || episode.AirsAfterSeasonNumber is not null)
.ToList();
- if (lastWatchedEpisode != null)
+ if (lastWatchedEpisode is not null)
{
// Last watched episode is added, because there could be specials that aired before the last watched episode
consideredEpisodes.Add(lastWatchedEpisode);
}
- if (nextEpisode != null)
+ if (nextEpisode is not null)
{
consideredEpisodes.Add(nextEpisode);
}
var sortedConsideredEpisodes = _libraryManager.Sort(consideredEpisodes, user, new[] { (ItemSortBy.AiredEpisodeOrder, SortOrder.Ascending) })
.Cast<Episode>();
- if (lastWatchedEpisode != null)
+ if (lastWatchedEpisode is not null)
{
sortedConsideredEpisodes = sortedConsideredEpisodes.SkipWhile(episode => !episode.Id.Equals(lastWatchedEpisode.Id)).Skip(1);
}
@@ -271,7 +271,7 @@ namespace Emby.Server.Implementations.TV
nextEpisode = sortedConsideredEpisodes.FirstOrDefault();
}
- if (nextEpisode != null)
+ if (nextEpisode is not null)
{
var userData = _userDataManager.GetUserData(user, nextEpisode);
@@ -284,7 +284,7 @@ namespace Emby.Server.Implementations.TV
return nextEpisode;
}
- if (lastWatchedEpisode != null)
+ if (lastWatchedEpisode is not null)
{
var userData = _userDataManager.GetUserData(user, lastWatchedEpisode);
diff --git a/Emby.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs
index 550f0e075..5e897833e 100644
--- a/Emby.Server.Implementations/Updates/InstallationManager.cs
+++ b/Emby.Server.Implementations/Updates/InstallationManager.cs
@@ -102,7 +102,7 @@ namespace Emby.Server.Implementations.Updates
PackageInfo[]? packages = await _httpClientFactory.CreateClient(NamedClient.Default)
.GetFromJsonAsync<PackageInfo[]>(new Uri(manifest), _jsonSerializerOptions, cancellationToken).ConfigureAwait(false);
- if (packages == null)
+ if (packages is null)
{
return Array.Empty<PackageInfo>();
}
@@ -168,7 +168,7 @@ namespace Emby.Server.Implementations.Updates
var result = new List<PackageInfo>();
foreach (RepositoryInfo repository in _config.Configuration.PluginRepositories)
{
- if (repository.Enabled && repository.Url != null)
+ if (repository.Enabled && repository.Url is not null)
{
// Where repositories have the same content, the details from the first is taken.
foreach (var package in await GetPackages(repository.Name ?? "Unnamed Repo", repository.Url, true, cancellationToken).ConfigureAwait(true))
@@ -181,7 +181,7 @@ namespace Emby.Server.Implementations.Updates
var version = package.Versions[i];
var plugin = _pluginManager.GetPlugin(package.Id, version.VersionNumber);
- if (plugin != null)
+ if (plugin is not null)
{
await _pluginManager.GenerateManifest(package, version.VersionNumber, plugin.Path, plugin.Manifest.Status).ConfigureAwait(false);
}
@@ -199,7 +199,7 @@ namespace Emby.Server.Implementations.Updates
continue;
}
- if (existing != null)
+ if (existing is not null)
{
// Assumption is both lists are ordered, so slot these into the correct place.
MergeSortedList(existing.Versions, package.Versions);
@@ -222,7 +222,7 @@ namespace Emby.Server.Implementations.Updates
Guid id = default,
Version? specificVersion = null)
{
- if (name != null)
+ if (name is not null)
{
availablePackages = availablePackages.Where(x => x.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
}
@@ -232,7 +232,7 @@ namespace Emby.Server.Implementations.Updates
availablePackages = availablePackages.Where(x => x.Id.Equals(id));
}
- if (specificVersion != null)
+ if (specificVersion is not null)
{
availablePackages = availablePackages.Where(x => x.Versions.Any(y => y.VersionNumber.Equals(specificVersion)));
}
@@ -251,7 +251,7 @@ namespace Emby.Server.Implementations.Updates
var package = FilterPackages(availablePackages, name, id, specificVersion).FirstOrDefault();
// Package not found in repository
- if (package == null)
+ if (package is null)
{
yield break;
}
@@ -260,11 +260,11 @@ namespace Emby.Server.Implementations.Updates
var availableVersions = package.Versions
.Where(x => string.IsNullOrEmpty(x.TargetAbi) || Version.Parse(x.TargetAbi) <= appVer);
- if (specificVersion != null)
+ if (specificVersion is not null)
{
availableVersions = availableVersions.Where(x => x.VersionNumber.Equals(specificVersion));
}
- else if (minVersion != null)
+ else if (minVersion is not null)
{
availableVersions = availableVersions.Where(x => x.VersionNumber >= minVersion);
}
@@ -370,7 +370,7 @@ namespace Emby.Server.Implementations.Updates
/// <param name="plugin">The <see cref="LocalPlugin"/> to uninstall.</param>
public void UninstallPlugin(LocalPlugin plugin)
{
- if (plugin == null)
+ if (plugin is null)
{
return;
}
@@ -495,7 +495,7 @@ namespace Emby.Server.Implementations.Updates
var compatibleVersions = GetCompatibleVersions(pluginCatalog, plugin.Name, plugin.Id, minVersion: plugin.Version);
var version = compatibleVersions.FirstOrDefault(y => y.Version > plugin.Version);
- if (version != null && CompletedInstallations.All(x => !x.Id.Equals(version.Id)))
+ if (version is not null && CompletedInstallations.All(x => !x.Id.Equals(version.Id)))
{
yield return version;
}
@@ -565,9 +565,9 @@ namespace Emby.Server.Implementations.Updates
?? _pluginManager.Plugins.FirstOrDefault(p => p.Name.Equals(package.Name, StringComparison.OrdinalIgnoreCase) && p.Version.Equals(package.Version));
await PerformPackageInstallation(package, plugin?.Manifest.Status ?? PluginStatus.Active, cancellationToken).ConfigureAwait(false);
- _logger.LogInformation("Plugin {Action}: {PluginName} {PluginVersion}", plugin == null ? "installed" : "updated", package.Name, package.Version);
+ _logger.LogInformation("Plugin {Action}: {PluginName} {PluginVersion}", plugin is null ? "installed" : "updated", package.Name, package.Version);
- return plugin != null;
+ return plugin is not null;
}
}
}