Selaa lähdekoodia

Fix some warnings

Bond-009 5 vuotta sitten
vanhempi
sitoutus
b477b3874e
48 muutettua tiedostoa jossa 128 lisäystä ja 100 poistoa
  1. 1 1
      Emby.Naming/AudioBook/AudioBookFileInfo.cs
  2. 1 1
      Emby.Naming/AudioBook/AudioBookInfo.cs
  3. 2 2
      Emby.Naming/TV/SeasonPathParser.cs
  4. 1 1
      Emby.Naming/Video/CleanDateTimeParser.cs
  5. 1 1
      Emby.Naming/Video/VideoFileInfo.cs
  6. 1 1
      Emby.Naming/Video/VideoInfo.cs
  7. 1 1
      Emby.Naming/Video/VideoResolver.cs
  8. 2 2
      Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs
  9. 4 4
      Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
  10. 2 2
      Emby.Server.Implementations/AppBase/ConfigurationHelper.cs
  11. 3 3
      Emby.Server.Implementations/ApplicationHost.cs
  12. 2 2
      Emby.Server.Implementations/Channels/ChannelManager.cs
  13. 1 1
      Emby.Server.Implementations/Collections/CollectionManager.cs
  14. 1 1
      Emby.Server.Implementations/Data/SqliteItemRepository.cs
  15. 0 1
      Emby.Server.Implementations/Devices/DeviceManager.cs
  16. 0 1
      Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs
  17. 1 1
      Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
  18. 1 1
      Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs
  19. 1 1
      Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
  20. 1 1
      Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
  21. 3 1
      Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs
  22. 1 1
      Emby.Server.Implementations/Library/SearchEngine.cs
  23. 2 1
      Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs
  24. 3 2
      Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs
  25. 2 1
      Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs
  26. 3 1
      Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs
  27. 1 1
      Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
  28. 5 5
      Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
  29. 2 2
      Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs
  30. 3 3
      Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
  31. 0 2
      Emby.Server.Implementations/Localization/LocalizationManager.cs
  32. 2 2
      Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs
  33. 12 6
      Emby.Server.Implementations/Networking/NetworkManager.cs
  34. 0 1
      Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs
  35. 5 4
      Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
  36. 16 16
      Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
  37. 2 3
      Emby.Server.Implementations/ScheduledTasks/Triggers/DailyTrigger.cs
  38. 10 6
      Emby.Server.Implementations/Services/ServicePath.cs
  39. 2 2
      Emby.Server.Implementations/Services/SwaggerService.cs
  40. 1 1
      Emby.Server.Implementations/Session/HttpSessionController.cs
  41. 1 1
      Emby.Server.Implementations/SocketSharp/SharpWebSocket.cs
  42. 4 2
      Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs
  43. 1 2
      Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
  44. 4 0
      Emby.Server.Implementations/Sorting/NameComparer.cs
  45. 4 0
      Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs
  46. 5 0
      Emby.Server.Implementations/Sorting/StudioComparer.cs
  47. 6 4
      Emby.Server.Implementations/WebSockets/WebSocketManager.cs
  48. 1 1
      MediaBrowser.Api/Playback/BaseStreamingService.cs

+ 1 - 1
Emby.Naming/AudioBook/AudioBookFileInfo.cs

@@ -3,7 +3,7 @@ using System;
 namespace Emby.Naming.AudioBook
 {
     /// <summary>
-    /// Represents a single video file
+    /// Represents a single video file.
     /// </summary>
     public class AudioBookFileInfo : IComparable<AudioBookFileInfo>
     {

+ 1 - 1
Emby.Naming/AudioBook/AudioBookInfo.cs

@@ -3,7 +3,7 @@ using System.Collections.Generic;
 namespace Emby.Naming.AudioBook
 {
     /// <summary>
-    /// Represents a complete video, including all parts and subtitles
+    /// Represents a complete video, including all parts and subtitles.
     /// </summary>
     public class AudioBookInfo
     {

+ 2 - 2
Emby.Naming/TV/SeasonPathParser.cs

@@ -25,7 +25,7 @@ namespace Emby.Naming.TV
         }
 
         /// <summary>
-        /// A season folder must contain one of these somewhere in the name
+        /// A season folder must contain one of these somewhere in the name.
         /// </summary>
         private static readonly string[] _seasonFolderNames =
         {
@@ -124,7 +124,7 @@ namespace Emby.Naming.TV
         }
 
         /// <summary>
-        /// Extracts the season number from the second half of the Season folder name (everything after "Season", or "Staffel")
+        /// Extracts the season number from the second half of the Season folder name (everything after "Season", or "Staffel").
         /// </summary>
         /// <param name="path">The path.</param>
         /// <returns>System.Nullable{System.Int32}.</returns>

+ 1 - 1
Emby.Naming/Video/CleanDateTimeParser.cs

@@ -8,7 +8,7 @@ using Emby.Naming.Common;
 namespace Emby.Naming.Video
 {
     /// <summary>
-    /// http://kodi.wiki/view/Advancedsettings.xml#video
+    /// <see href="http://kodi.wiki/view/Advancedsettings.xml#video" />.
     /// </summary>
     public class CleanDateTimeParser
     {

+ 1 - 1
Emby.Naming/Video/VideoFileInfo.cs

@@ -1,7 +1,7 @@
 namespace Emby.Naming.Video
 {
     /// <summary>
-    /// Represents a single video file
+    /// Represents a single video file.
     /// </summary>
     public class VideoFileInfo
     {

+ 1 - 1
Emby.Naming/Video/VideoInfo.cs

@@ -3,7 +3,7 @@ using System.Collections.Generic;
 namespace Emby.Naming.Video
 {
     /// <summary>
-    /// Represents a complete video, including all parts and subtitles
+    /// Represents a complete video, including all parts and subtitles.
     /// </summary>
     public class VideoInfo
     {

+ 1 - 1
Emby.Naming/Video/VideoResolver.cs

@@ -41,7 +41,7 @@ namespace Emby.Naming.Video
         /// <param name="isDirectory">if set to <c>true</c> [is folder].</param>
         /// <param name="parseName">Whether or not the name should be parsed for info</param>
         /// <returns>VideoFileInfo.</returns>
-        /// <exception cref="ArgumentNullException">path</exception>
+        /// <exception cref="ArgumentNullException"><c>path</c> is <c>null</c>.</exception>
         public VideoFileInfo Resolve(string path, bool isDirectory, bool parseName = true)
         {
             if (string.IsNullOrEmpty(path))

+ 2 - 2
Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs

@@ -616,8 +616,8 @@ namespace Emby.Server.Implementations.Activity
         /// <summary>
         /// Constructs a string description of a time-span value.
         /// </summary>
-        /// <param name="value">The value of this item</param>
-        /// <param name="description">The name of this item (singular form)</param>
+        /// <param name="value">The value of this item.</param>
+        /// <param name="description">The name of this item (singular form).</param>
         private static string CreateValueString(int value, string description)
         {
             return string.Format(

+ 4 - 4
Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs

@@ -16,7 +16,7 @@ using Microsoft.Extensions.Logging;
 namespace Emby.Server.Implementations.AppBase
 {
     /// <summary>
-    /// Class BaseConfigurationManager
+    /// Class BaseConfigurationManager.
     /// </summary>
     public abstract class BaseConfigurationManager : IConfigurationManager
     {
@@ -48,7 +48,7 @@ namespace Emby.Server.Implementations.AppBase
         /// <param name="applicationPaths">The application paths.</param>
         /// <param name="loggerFactory">The logger factory.</param>
         /// <param name="xmlSerializer">The XML serializer.</param>
-        /// <param name="fileSystem">The file system</param>
+        /// <param name="fileSystem">The file system.</param>
         protected BaseConfigurationManager(IApplicationPaths applicationPaths, ILoggerFactory loggerFactory, IXmlSerializer xmlSerializer, IFileSystem fileSystem)
         {
             CommonApplicationPaths = applicationPaths;
@@ -92,7 +92,7 @@ namespace Emby.Server.Implementations.AppBase
         protected IXmlSerializer XmlSerializer { get; private set; }
 
         /// <summary>
-        /// Gets or sets the application paths.
+        /// Gets the application paths.
         /// </summary>
         /// <value>The application paths.</value>
         public IApplicationPaths CommonApplicationPaths { get; private set; }
@@ -173,7 +173,7 @@ namespace Emby.Server.Implementations.AppBase
         /// Replaces the configuration.
         /// </summary>
         /// <param name="newConfiguration">The new configuration.</param>
-        /// <exception cref="ArgumentNullException">newConfiguration</exception>
+        /// <exception cref="ArgumentNullException"><c>newConfiguration</c> is <c>null</c>.</exception>
         public virtual void ReplaceConfiguration(BaseApplicationConfiguration newConfiguration)
         {
             if (newConfiguration == null)

+ 2 - 2
Emby.Server.Implementations/AppBase/ConfigurationHelper.cs

@@ -6,13 +6,13 @@ using MediaBrowser.Model.Serialization;
 namespace Emby.Server.Implementations.AppBase
 {
     /// <summary>
-    /// Class ConfigurationHelper
+    /// Class ConfigurationHelper.
     /// </summary>
     public static class ConfigurationHelper
     {
         /// <summary>
         /// Reads an xml configuration file from the file system
-        /// It will immediately re-serialize and save if new serialization data is available due to property changes
+        /// It will immediately re-serialize and save if new serialization data is available due to property changes.
         /// </summary>
         /// <param name="type">The type.</param>
         /// <param name="path">The path.</param>

+ 3 - 3
Emby.Server.Implementations/ApplicationHost.cs

@@ -321,7 +321,7 @@ namespace Emby.Server.Implementations
         private readonly IConfiguration _configuration;
 
         /// <summary>
-        /// Gets or sets the installation manager.
+        /// Gets the installation manager.
         /// </summary>
         /// <value>The installation manager.</value>
         protected IInstallationManager InstallationManager { get; private set; }
@@ -500,7 +500,7 @@ namespace Emby.Server.Implementations
         /// <summary>
         /// Gets the export types.
         /// </summary>
-        /// <typeparam name="T">The type</typeparam>
+        /// <typeparam name="T">The type.</typeparam>
         /// <returns>IEnumerable{Type}.</returns>
         public IEnumerable<Type> GetExportTypes<T>()
         {
@@ -1022,7 +1022,7 @@ namespace Emby.Server.Implementations
         }
 
         /// <summary>
-        /// Dirty hacks
+        /// Dirty hacks.
         /// </summary>
         private void SetStaticProperties()
         {

+ 2 - 2
Emby.Server.Implementations/Channels/ChannelManager.cs

@@ -473,7 +473,7 @@ namespace Emby.Server.Implementations.Channels
             await item.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService(_fileSystem))
             {
                 ForceSave = !isNew && forceUpdate
-            }, cancellationToken);
+            }, cancellationToken).ConfigureAwait(false);
 
             return item;
         }
@@ -636,7 +636,7 @@ namespace Emby.Server.Implementations.Channels
 
         private async Task RefreshLatestChannelItems(IChannel channel, CancellationToken cancellationToken)
         {
-            var internalChannel = await GetChannel(channel, cancellationToken);
+            var internalChannel = await GetChannel(channel, cancellationToken).ConfigureAwait(false);
 
             var query = new InternalItemsQuery();
             query.Parent = internalChannel;

+ 1 - 1
Emby.Server.Implementations/Collections/CollectionManager.cs

@@ -121,7 +121,7 @@ namespace Emby.Server.Implementations.Collections
             // This could cause it to get re-resolved as a plain folder
             var folderName = _fileSystem.GetValidFilename(name) + " [boxset]";
 
-            var parentFolder = GetCollectionsFolder(true).Result;
+            var parentFolder = GetCollectionsFolder(true).GetAwaiter().GetResult();
 
             if (parentFolder == null)
             {

+ 1 - 1
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -1177,7 +1177,7 @@ namespace Emby.Server.Implementations.Data
         {
             if (id == Guid.Empty)
             {
-                throw new ArgumentException(nameof(id), "Guid can't be empty");
+                throw new ArgumentException("Guid can't be empty", nameof(id));
             }
 
             CheckDisposed();

+ 0 - 1
Emby.Server.Implementations/Devices/DeviceManager.cs

@@ -130,7 +130,6 @@ namespace Emby.Server.Implementations.Devices
             var session = _authRepo.Get(new AuthenticationInfoQuery
             {
                 DeviceId = id
-
             }).Items.FirstOrDefault();
 
             var device = session == null ? null : ToDeviceInfo(session);

+ 0 - 1
Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs

@@ -70,7 +70,6 @@ namespace Emby.Server.Implementations.EntryPoints
             if (!string.Equals(_lastConfigIdentifier, GetConfigIdentifier(), StringComparison.OrdinalIgnoreCase))
             {
                 Stop();
-
                 Start();
             }
         }

+ 1 - 1
Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs

@@ -455,7 +455,7 @@ namespace Emby.Server.Implementations.EntryPoints
                 return new[] { item };
             }
 
-            return new T[] { };
+            return Array.Empty<T>();
         }
 
         /// <summary>

+ 1 - 1
Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs

@@ -156,7 +156,7 @@ namespace Emby.Server.Implementations.EntryPoints
         {
             try
             {
-                await _sessionManager.SendMessageToAdminSessions(name, data, CancellationToken.None);
+                await _sessionManager.SendMessageToAdminSessions(name, data, CancellationToken.None).ConfigureAwait(false);
             }
             catch (Exception)
             {

+ 1 - 1
Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs

@@ -325,7 +325,7 @@ namespace Emby.Server.Implementations.HttpClientManager
 
             if (options.LogErrorResponseBody)
             {
-                var msg = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
+                string msg = await response.Content.ReadAsStringAsync().ConfigureAwait(false);   
                 _logger.LogError("HTTP request failed with message: {Message}", msg);
             }
 

+ 1 - 1
Emby.Server.Implementations/HttpServer/HttpResultFactory.cs

@@ -460,7 +460,7 @@ namespace Emby.Server.Implementations.HttpServer
 
             if (string.IsNullOrEmpty(path))
             {
-                throw new ArgumentNullException(nameof(path));
+                throw new ArgumentException("Path can't be empty.", nameof(options));
             }
 
             if (fileShare != FileShareMode.Read && fileShare != FileShareMode.ReadWrite)

+ 3 - 1
Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs

@@ -48,12 +48,14 @@ namespace Emby.Server.Implementations.HttpServer
         public IDictionary<string, string> Headers => _options;
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="StreamWriter" /> class.
+        /// Initializes a new instance of the <see cref="RangeRequestWriter" /> class.
         /// </summary>
         /// <param name="rangeHeader">The range header.</param>
+        /// <param name="contentLength">The content length.</param>
         /// <param name="source">The source.</param>
         /// <param name="contentType">Type of the content.</param>
         /// <param name="isHeadRequest">if set to <c>true</c> [is head request].</param>
+        /// <param name="logger">The logger instance.</param>
         public RangeRequestWriter(string rangeHeader, long contentLength, Stream source, string contentType, bool isHeadRequest, ILogger logger)
         {
             if (string.IsNullOrEmpty(contentType))

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

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

+ 2 - 1
Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs

@@ -28,10 +28,11 @@ namespace Emby.Server.Implementations.Library.Validators
         private readonly IItemRepository _itemRepo;
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="ArtistsPostScanTask" /> class.
+        /// Initializes a new instance of the <see cref="ArtistsValidator" /> class.
         /// </summary>
         /// <param name="libraryManager">The library manager.</param>
         /// <param name="logger">The logger.</param>
+        /// <param name="itemRepo">The item repository.</param>
         public ArtistsValidator(ILibraryManager libraryManager, ILogger logger, IItemRepository itemRepo)
         {
             _libraryManager = libraryManager;

+ 3 - 2
Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs

@@ -10,17 +10,18 @@ namespace Emby.Server.Implementations.Library.Validators
     public class GenresPostScanTask : ILibraryPostScanTask
     {
         /// <summary>
-        /// The _library manager
+        /// The _library manager.
         /// </summary>
         private readonly ILibraryManager _libraryManager;
         private readonly ILogger _logger;
         private readonly IItemRepository _itemRepo;
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="ArtistsPostScanTask" /> class.
+        /// Initializes a new instance of the <see cref="GenresPostScanTask" /> class.
         /// </summary>
         /// <param name="libraryManager">The library manager.</param>
         /// <param name="logger">The logger.</param>
+        /// <param name="itemRepo">The item repository.</param>
         public GenresPostScanTask(ILibraryManager libraryManager, ILogger logger, IItemRepository itemRepo)
         {
             _libraryManager = libraryManager;

+ 2 - 1
Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs

@@ -20,10 +20,11 @@ namespace Emby.Server.Implementations.Library.Validators
         private readonly IItemRepository _itemRepo;
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="ArtistsPostScanTask" /> class.
+        /// Initializes a new instance of the <see cref="MusicGenresPostScanTask" /> class.
         /// </summary>
         /// <param name="libraryManager">The library manager.</param>
         /// <param name="logger">The logger.</param>
+        /// <param name="itemRepo">The item repository.</param>
         public MusicGenresPostScanTask(ILibraryManager libraryManager, ILogger logger, IItemRepository itemRepo)
         {
             _libraryManager = libraryManager;

+ 3 - 1
Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs

@@ -21,9 +21,11 @@ namespace Emby.Server.Implementations.Library.Validators
         private readonly IItemRepository _itemRepo;
 
         /// <summary>
-        /// Initializes a new instance of the <see cref="ArtistsPostScanTask" /> class.
+        /// Initializes a new instance of the <see cref="StudiosPostScanTask" /> class.
         /// </summary>
         /// <param name="libraryManager">The library manager.</param>
+        /// <param name="logger">The logger.</param>
+        /// <param name="itemRepo">Th item repository.</param>
         public StudiosPostScanTask(ILibraryManager libraryManager, ILogger logger, IItemRepository itemRepo)
         {
             _libraryManager = libraryManager;

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

@@ -237,7 +237,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
 
             if (requiresRefresh)
             {
-                await _libraryManager.ValidateMediaLibrary(new SimpleProgress<double>(), CancellationToken.None);
+                await _libraryManager.ValidateMediaLibrary(new SimpleProgress<double>(), CancellationToken.None).ConfigureAwait(false);
             }
         }
 

+ 5 - 5
Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs

@@ -501,7 +501,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
 
         public async Task<List<NameIdPair>> GetHeadends(ListingsProviderInfo info, string country, string location, CancellationToken cancellationToken)
         {
-            var token = await GetToken(info, cancellationToken);
+            var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
 
             var lineups = new List<NameIdPair>();
 
@@ -713,7 +713,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
 
         private async Task AddLineupToAccount(ListingsProviderInfo info, CancellationToken cancellationToken)
         {
-            var token = await GetToken(info, cancellationToken);
+            var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
 
             if (string.IsNullOrEmpty(token))
             {
@@ -738,7 +738,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
 
             httpOptions.RequestHeaders["token"] = token;
 
-            using (await _httpClient.SendAsync(httpOptions, "PUT"))
+            using (await _httpClient.SendAsync(httpOptions, "PUT").ConfigureAwait(false))
             {
             }
         }
@@ -750,7 +750,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
                 throw new ArgumentException("Listings Id required");
             }
 
-            var token = await GetToken(info, cancellationToken);
+            var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
 
             if (string.IsNullOrEmpty(token))
             {
@@ -833,7 +833,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
                 throw new Exception("ListingsId required");
             }
 
-            var token = await GetToken(info, cancellationToken);
+            var token = await GetToken(info, cancellationToken).ConfigureAwait(false);
 
             if (string.IsNullOrEmpty(token))
             {

+ 2 - 2
Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs

@@ -38,8 +38,8 @@ namespace Emby.Server.Implementations.LiveTv
         /// <returns>IEnumerable{BaseTaskTrigger}.</returns>
         public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
         {
-            return new[] {
-
+            return new[]
+            {
                 // Every so often
                 new TaskTriggerInfo { Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(24).Ticks}
             };

+ 3 - 3
Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs

@@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
                 Url = string.Format("{0}/tuners.html", GetApiUrl(info)),
                 CancellationToken = cancellationToken,
                 BufferContent = false
-            }, HttpMethod.Get))
+            }, HttpMethod.Get).ConfigureAwait(false))
             using (var stream = response.Content)
             using (var sr = new StreamReader(stream, System.Text.Encoding.UTF8))
             {
@@ -259,7 +259,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
                 for (int i = 0; i < model.TunerCount; ++i)
                 {
                     var name = string.Format("Tuner {0}", i + 1);
-                    var currentChannel = "none"; /// @todo Get current channel and map back to Station Id
+                    var currentChannel = "none"; // @todo Get current channel and map back to Station Id
                     var isAvailable = await manager.CheckTunerAvailability(ipInfo, i, cancellationToken).ConfigureAwait(false);
                     var status = isAvailable ? LiveTvTunerStatus.Available : LiveTvTunerStatus.LiveTv;
                     tuners.Add(new LiveTvTunerInfo
@@ -298,7 +298,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
         public async Task<List<LiveTvTunerInfo>> GetTunerInfos(TunerHostInfo info, CancellationToken cancellationToken)
         {
             // TODO Need faster way to determine UDP vs HTTP
-            var channels = await GetChannels(info, true, cancellationToken);
+            var channels = await GetChannels(info, true, cancellationToken).ConfigureAwait(false);
 
             var hdHomerunChannelInfo = channels.FirstOrDefault() as HdHomerunChannelInfo;
 

+ 0 - 2
Emby.Server.Implementations/Localization/LocalizationManager.cs

@@ -5,11 +5,9 @@ using System.Globalization;
 using System.IO;
 using System.Linq;
 using System.Reflection;
-using System.Text;
 using System.Threading.Tasks;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Extensions;
 using MediaBrowser.Model.Globalization;
 using MediaBrowser.Model.Serialization;
 using Microsoft.Extensions.Logging;

+ 2 - 2
Emby.Server.Implementations/Middleware/WebSocketMiddleware.cs

@@ -27,12 +27,12 @@ namespace Emby.Server.Implementations.Middleware
                 var webSocketContext = await httpContext.WebSockets.AcceptWebSocketAsync(null).ConfigureAwait(false);
                 if (webSocketContext != null)
                 {
-                    await _webSocketManager.OnWebSocketConnected(webSocketContext);
+                    await _webSocketManager.OnWebSocketConnected(webSocketContext).ConfigureAwait(false);
                 }
             }
             else
             {
-                await _next.Invoke(httpContext);
+                await _next.Invoke(httpContext).ConfigureAwait(false);
             }
         }
     }

+ 12 - 6
Emby.Server.Implementations/Networking/NetworkManager.cs

@@ -490,23 +490,25 @@ namespace Emby.Server.Implementations.Networking
             IPAddress ipaddy;
             int port = -1;
 
-            //check if we have an IPv6 or ports
+            // check if we have an IPv6 or ports
             if (values.Length <= 2) // ipv4 or hostname
             {
                 port = values.Length == 1 ? defaultport : GetPort(values[1]);
 
-                //try to use the address as IPv4, otherwise get hostname
+                // try to use the address as IPv4, otherwise get hostname
                 if (!IPAddress.TryParse(values[0], out ipaddy))
+                {
                     ipaddy = await GetIPfromHost(values[0]).ConfigureAwait(false);
+                }
             }
-            else if (values.Length > 2) //ipv6
+            else if (values.Length > 2) // ipv6
             {
-                //could [a:b:c]:d
+                //ncould [a:b:c]:d
                 if (values[0].StartsWith("[") && values[values.Length - 2].EndsWith("]"))
                 {
                     string ipaddressstring = string.Join(":", values.Take(values.Length - 1).ToArray());
                     ipaddy = IPAddress.Parse(ipaddressstring);
-                    port = GetPort(values[values.Length - 1]);
+                    port = GetPort(values[^1]);
                 }
                 else //[a:b:c] or a:b:c
                 {
@@ -516,7 +518,11 @@ namespace Emby.Server.Implementations.Networking
             }
             else
             {
-                throw new FormatException(string.Format("Invalid endpoint ipaddress '{0}'", endpointstring));
+                throw new FormatException(
+                    string.Format(
+                        CultureInfo.InvariantCulture,
+                        "Invalid endpoint ipaddress '{0}'",
+                        endpointstring));
             }
 
             if (port == -1)

+ 0 - 1
Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs

@@ -48,4 +48,3 @@ namespace Emby.Server.Implementations.Playlists
         }
     }
 }
-

+ 5 - 4
Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs

@@ -23,7 +23,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
         public event EventHandler<GenericEventArgs<double>> TaskProgress;
 
         /// <summary>
-        /// Gets or sets the scheduled task.
+        /// Gets the scheduled task.
         /// </summary>
         /// <value>The scheduled task.</value>
         public IScheduledTask ScheduledTask { get; private set; }
@@ -215,11 +215,12 @@ namespace Emby.Server.Implementations.ScheduledTasks
         public double? CurrentProgress { get; private set; }
 
         /// <summary>
-        /// The _triggers
+        /// The _triggers.
         /// </summary>
         private Tuple<TaskTriggerInfo, ITaskTrigger>[] _triggers;
+
         /// <summary>
-        /// Gets the triggers that define when the task will run
+        /// Gets the triggers that define when the task will run.
         /// </summary>
         /// <value>The triggers.</value>
         private Tuple<TaskTriggerInfo, ITaskTrigger>[] InternalTriggers
@@ -245,7 +246,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
         }
 
         /// <summary>
-        /// Gets the triggers that define when the task will run
+        /// Gets the triggers that define when the task will run.
         /// </summary>
         /// <value>The triggers.</value>
         /// <exception cref="ArgumentNullException">value</exception>

+ 16 - 16
Emby.Server.Implementations/ScheduledTasks/TaskManager.cs

@@ -36,19 +36,19 @@ namespace Emby.Server.Implementations.ScheduledTasks
         /// Gets or sets the json serializer.
         /// </summary>
         /// <value>The json serializer.</value>
-        private IJsonSerializer JsonSerializer { get; set; }
+        private readonly IJsonSerializer _jsonSerializer;
 
         /// <summary>
         /// Gets or sets the application paths.
         /// </summary>
         /// <value>The application paths.</value>
-        private IApplicationPaths ApplicationPaths { get; set; }
+        private readonly IApplicationPaths _applicationPaths;
 
         /// <summary>
         /// Gets the logger.
         /// </summary>
         /// <value>The logger.</value>
-        private ILogger Logger { get; set; }
+        private readonly ILogger _logger;
         private readonly IFileSystem _fileSystem;
 
         /// <summary>
@@ -57,19 +57,19 @@ namespace Emby.Server.Implementations.ScheduledTasks
         /// <param name="applicationPaths">The application paths.</param>
         /// <param name="jsonSerializer">The json serializer.</param>
         /// <param name="loggerFactory">The logger factory.</param>
-        /// <exception cref="System.ArgumentException">kernel</exception>
+        /// <param name="fileSystem">The filesystem manager.</param>
         public TaskManager(
             IApplicationPaths applicationPaths,
             IJsonSerializer jsonSerializer,
             ILoggerFactory loggerFactory,
             IFileSystem fileSystem)
         {
-            ApplicationPaths = applicationPaths;
-            JsonSerializer = jsonSerializer;
-            Logger = loggerFactory.CreateLogger(nameof(TaskManager));
+            _applicationPaths = applicationPaths;
+            _jsonSerializer = jsonSerializer;
+            _logger = loggerFactory.CreateLogger(nameof(TaskManager));
             _fileSystem = fileSystem;
 
-            ScheduledTasks = new IScheduledTaskWorker[] { };
+            ScheduledTasks = Array.Empty<IScheduledTaskWorker>();
         }
 
         /// <summary>
@@ -78,7 +78,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
         /// <typeparam name="T"></typeparam>
         /// <param name="options">Task options.</param>
         public void CancelIfRunningAndQueue<T>(TaskOptions options)
-                 where T : IScheduledTask
+            where T : IScheduledTask
         {
             var task = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T));
             ((ScheduledTaskWorker)task).CancelIfRunning();
@@ -115,7 +115,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
 
             if (scheduledTask == null)
             {
-                Logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", typeof(T).Name);
+                _logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", typeof(T).Name);
             }
             else
             {
@@ -147,13 +147,13 @@ namespace Emby.Server.Implementations.ScheduledTasks
 
             if (scheduledTask == null)
             {
-                Logger.LogError("Unable to find scheduled task of type {0} in Execute.", typeof(T).Name);
+                _logger.LogError("Unable to find scheduled task of type {0} in Execute.", typeof(T).Name);
             }
             else
             {
                 var type = scheduledTask.ScheduledTask.GetType();
 
-                Logger.LogInformation("Queueing task {0}", type.Name);
+                _logger.LogInformation("Queueing task {0}", type.Name);
 
                 lock (_taskQueue)
                 {
@@ -176,7 +176,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
 
             if (scheduledTask == null)
             {
-                Logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", task.GetType().Name);
+                _logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", task.GetType().Name);
             }
             else
             {
@@ -193,7 +193,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
         {
             var type = task.ScheduledTask.GetType();
 
-            Logger.LogInformation("Queueing task {0}", type.Name);
+            _logger.LogInformation("Queueing task {0}", type.Name);
 
             lock (_taskQueue)
             {
@@ -213,7 +213,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
         /// <param name="tasks">The tasks.</param>
         public void AddTasks(IEnumerable<IScheduledTask> tasks)
         {
-            var list = tasks.Select(t => new ScheduledTaskWorker(t, ApplicationPaths, this, JsonSerializer, Logger, _fileSystem));
+            var list = tasks.Select(t => new ScheduledTaskWorker(t, _applicationPaths, this, _jsonSerializer, _logger, _fileSystem));
 
             ScheduledTasks = ScheduledTasks.Concat(list).ToArray();
         }
@@ -281,7 +281,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
         /// </summary>
         private void ExecuteQueuedTasks()
         {
-            Logger.LogInformation("ExecuteQueuedTasks");
+            _logger.LogInformation("ExecuteQueuedTasks");
 
             // Execute queued tasks
             lock (_taskQueue)

+ 2 - 3
Emby.Server.Implementations/ScheduledTasks/Triggers/DailyTrigger.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Globalization;
 using System.Threading;
 using MediaBrowser.Model.Tasks;
 using Microsoft.Extensions.Logging;
@@ -7,12 +6,12 @@ using Microsoft.Extensions.Logging;
 namespace Emby.Server.Implementations.ScheduledTasks
 {
     /// <summary>
-    /// Represents a task trigger that fires everyday
+    /// Represents a task trigger that fires everyday.
     /// </summary>
     public class DailyTrigger : ITaskTrigger
     {
         /// <summary>
-        /// Get the time of day to trigger the task to run
+        /// Get the time of day to trigger the task to run.
         /// </summary>
         /// <value>The time of day.</value>
         public TimeSpan TimeOfDay { get; set; }

+ 10 - 6
Emby.Server.Implementations/Services/ServicePath.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.IO;
 using System.Linq;
 using System.Reflection;
@@ -45,8 +46,8 @@ namespace Emby.Server.Implementations.Services
         public int PathComponentsCount { get; set; }
 
         /// <summary>
-        /// The total number of segments after subparts have been exploded ('.')
-        /// e.g. /path/to/here.ext == 4
+        /// Gets or sets the total number of segments after subparts have been exploded ('.')
+        /// e.g. /path/to/here.ext == 4.
         /// </summary>
         public int TotalComponentsCount { get; set; }
 
@@ -279,7 +280,7 @@ namespace Emby.Server.Implementations.Services
         }
 
         /// <summary>
-        /// Provide for quick lookups based on hashes that can be determined from a request url
+        /// Provide for quick lookups based on hashes that can be determined from a request url.
         /// </summary>
         public string FirstMatchHashKey { get; private set; }
 
@@ -436,9 +437,12 @@ namespace Emby.Server.Implementations.Services
                     && requestComponents.Length >= this.TotalComponentsCount - this.wildcardCount;
 
                 if (!isValidWildCardPath)
-                    throw new ArgumentException(string.Format(
-                        "Path Mismatch: Request Path '{0}' has invalid number of components compared to: '{1}'",
-                        pathInfo, this.restPath));
+                    throw new ArgumentException(
+                        string.Format(
+                            CultureInfo.InvariantCulture,
+                            "Path Mismatch: Request Path '{0}' has invalid number of components compared to: '{1}'",
+                            pathInfo,
+                            this.restPath));
             }
 
             var requestKeyValuesMap = new Dictionary<string, string>();

+ 2 - 2
Emby.Server.Implementations/Services/SwaggerService.cs

@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using MediaBrowser.Controller.Net;
@@ -175,7 +175,7 @@ namespace Emby.Server.Implementations.Services
 
         private SwaggerTag[] GetTags()
         {
-            return new SwaggerTag[] { };
+            return Array.Empty<SwaggerTag>();
         }
 
         private Dictionary<string, SwaggerDefinition> GetDefinitions()

+ 1 - 1
Emby.Server.Implementations/Session/HttpSessionController.cs

@@ -105,7 +105,7 @@ namespace Emby.Server.Implementations.Session
             return SendMessage(command.Command.ToString(), messageId, args, cancellationToken);
         }
 
-        private string[] _supportedMessages = new string[] { };
+        private string[] _supportedMessages = Array.Empty<string>();
         public Task SendMessage<T>(string name, string messageId, T data, ISessionController[] allControllers, CancellationToken cancellationToken)
         {
             if (!IsSessionActive)

+ 1 - 1
Emby.Server.Implementations/SocketSharp/SharpWebSocket.cs

@@ -33,7 +33,7 @@ namespace Emby.Server.Implementations.SocketSharp
         }
 
         /// <summary>
-        /// Gets or sets the state.
+        /// Gets the state.
         /// </summary>
         /// <value>The state.</value>
         public WebSocketState State => _webSocket.State;

+ 4 - 2
Emby.Server.Implementations/SocketSharp/WebSocketSharpListener.cs

@@ -81,8 +81,10 @@ namespace Emby.Server.Implementations.SocketSharp
 
                 if (webSocketContext.State == WebSocketState.Open)
                 {
-                    await webSocketContext.CloseAsync(result.CloseStatus ?? WebSocketCloseStatus.NormalClosure,
-                        result.CloseStatusDescription, _disposeCancellationToken);
+                    await webSocketContext.CloseAsync(
+                        result.CloseStatus ?? WebSocketCloseStatus.NormalClosure,
+                        result.CloseStatusDescription,
+                        _disposeCancellationToken).ConfigureAwait(false);
                 }
 
                 socket.Dispose();

+ 1 - 2
Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs

@@ -2,7 +2,6 @@ using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Net;
-using System.Linq;
 using MediaBrowser.Common.Net;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Http.Extensions;
@@ -13,7 +12,7 @@ using IHttpRequest = MediaBrowser.Model.Services.IHttpRequest;
 
 namespace Emby.Server.Implementations.SocketSharp
 {
-    public partial class WebSocketSharpRequest : IHttpRequest
+    public class WebSocketSharpRequest : IHttpRequest
     {
         public const string FormUrlEncoded = "application/x-www-form-urlencoded";
         public const string MultiPartFormData = "multipart/form-data";

+ 4 - 0
Emby.Server.Implementations/Sorting/NameComparer.cs

@@ -19,10 +19,14 @@ namespace Emby.Server.Implementations.Sorting
         public int Compare(BaseItem x, BaseItem y)
         {
             if (x == null)
+            {
                 throw new ArgumentNullException(nameof(x));
+            }
 
             if (y == null)
+            {
                 throw new ArgumentNullException(nameof(y));
+            }
 
             return string.Compare(x.Name, y.Name, StringComparison.CurrentCultureIgnoreCase);
         }

+ 4 - 0
Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs

@@ -24,10 +24,14 @@ namespace Emby.Server.Implementations.Sorting
         public int Compare(BaseItem x, BaseItem y)
         {
             if (x == null)
+            {
                 throw new ArgumentNullException(nameof(x));
+            }
 
             if (y == null)
+            {
                 throw new ArgumentNullException(nameof(y));
+            }
 
             var levelX = string.IsNullOrEmpty(x.OfficialRating) ? 0 : _localization.GetRatingLevel(x.OfficialRating) ?? 0;
             var levelY = string.IsNullOrEmpty(y.OfficialRating) ? 0 : _localization.GetRatingLevel(y.OfficialRating) ?? 0;

+ 5 - 0
Emby.Server.Implementations/Sorting/StudioComparer.cs

@@ -17,10 +17,15 @@ namespace Emby.Server.Implementations.Sorting
         public int Compare(BaseItem x, BaseItem y)
         {
             if (x == null)
+            {
                 throw new ArgumentNullException(nameof(x));
+            }
 
             if (y == null)
+            {
                 throw new ArgumentNullException(nameof(y));
+            }
+
             return AlphanumComparator.CompareValues(x.Studios.FirstOrDefault() ?? string.Empty, y.Studios.FirstOrDefault() ?? string.Empty);
         }
 

+ 6 - 4
Emby.Server.Implementations/WebSockets/WebSocketManager.cs

@@ -39,12 +39,12 @@ namespace Emby.Server.Implementations.WebSockets
             do
             {
                 var buffer = WebSocket.CreateServerBuffer(BufferSize);
-                result = await webSocket.ReceiveAsync(buffer, cancellationToken);
+                result = await webSocket.ReceiveAsync(buffer, cancellationToken).ConfigureAwait(false);
                 message.AddRange(buffer.Array.Take(result.Count));
 
                 if (result.EndOfMessage)
                 {
-                    await ProcessMessage(message.ToArray(), taskCompletionSource);
+                    await ProcessMessage(message.ToArray(), taskCompletionSource).ConfigureAwait(false);
                     message.Clear();
                 }
             } while (!taskCompletionSource.Task.IsCompleted &&
@@ -53,8 +53,10 @@ namespace Emby.Server.Implementations.WebSockets
 
             if (webSocket.State == WebSocketState.Open)
             {
-                await webSocket.CloseAsync(result.CloseStatus ?? WebSocketCloseStatus.NormalClosure,
-                    result.CloseStatusDescription, cancellationToken);
+                await webSocket.CloseAsync(
+                    result.CloseStatus ?? WebSocketCloseStatus.NormalClosure,
+                    result.CloseStatusDescription,
+                    cancellationToken).ConfigureAwait(false);
             }
         }
 

+ 1 - 1
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -588,7 +588,7 @@ namespace MediaBrowser.Api.Playback
 
         /// <summary>
         /// Parses query parameters as StreamOptions
-        /// <summary>
+        /// </summary>
         /// <param name="request">The stream request.</param>
         private void ParseStreamOptions(StreamRequest request)
         {