浏览代码

Post GPL cleanup

Bond_009 6 年之前
父节点
当前提交
340a2c6512
共有 99 个文件被更改,包括 323 次插入1049 次删除
  1. 0 1
      Emby.Server.Implementations/Library/UserManager.cs
  2. 1 2
      MediaBrowser.Api/BaseApiService.cs
  3. 2 3
      MediaBrowser.Api/UserService.cs
  4. 1 5
      MediaBrowser.Controller/Authentication/IAuthenticationProvider.cs
  5. 0 7
      MediaBrowser.Controller/Chapters/IChapterManager.cs
  6. 2 2
      MediaBrowser.Controller/Collections/CollectionCreationOptions.cs
  7. 0 45
      MediaBrowser.Controller/Connect/IConnectManager.cs
  8. 0 1
      MediaBrowser.Controller/Dto/IDtoService.cs
  9. 1 1
      MediaBrowser.Controller/Entities/AggregateFolder.cs
  10. 2 7
      MediaBrowser.Controller/Entities/Audio/Audio.cs
  11. 2 2
      MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
  12. 1 2
      MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
  13. 23 17
      MediaBrowser.Controller/Entities/BaseItem.cs
  14. 3 11
      MediaBrowser.Controller/Entities/CollectionFolder.cs
  15. 3 9
      MediaBrowser.Controller/Entities/Game.cs
  16. 31 35
      MediaBrowser.Controller/Entities/InternalItemsQuery.cs
  17. 2 2
      MediaBrowser.Controller/Entities/InternalPeopleQuery.cs
  18. 4 15
      MediaBrowser.Controller/Entities/Movies/BoxSet.cs
  19. 1 8
      MediaBrowser.Controller/Entities/Movies/Movie.cs
  20. 1 1
      MediaBrowser.Controller/Entities/MusicVideo.cs
  21. 3 2
      MediaBrowser.Controller/Entities/Photo.cs
  22. 4 8
      MediaBrowser.Controller/Entities/TV/Episode.cs
  23. 4 3
      MediaBrowser.Controller/Entities/TV/Season.cs
  24. 3 5
      MediaBrowser.Controller/Entities/TV/Series.cs
  25. 2 7
      MediaBrowser.Controller/Entities/Trailer.cs
  26. 4 15
      MediaBrowser.Controller/Entities/UserView.cs
  27. 10 18
      MediaBrowser.Controller/Entities/Video.cs
  28. 0 1
      MediaBrowser.Controller/Library/IUserDataManager.cs
  29. 3 5
      MediaBrowser.Controller/Library/ItemResolveArgs.cs
  30. 6 37
      MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
  31. 2 2
      MediaBrowser.Controller/LiveTv/TimerInfo.cs
  32. 12 21
      MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
  33. 5 5
      MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs
  34. 0 1
      MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs
  35. 1 1
      MediaBrowser.Controller/MediaEncoding/MediaInfoRequest.cs
  36. 1 7
      MediaBrowser.Controller/Net/AuthorizationInfo.cs
  37. 0 2
      MediaBrowser.Controller/Net/WebSocketConnectEventArgs.cs
  38. 0 1
      MediaBrowser.Controller/Playlists/IPlaylistManager.cs
  39. 13 16
      MediaBrowser.Controller/Playlists/Playlist.cs
  40. 2 2
      MediaBrowser.Controller/Providers/AlbumInfo.cs
  41. 2 2
      MediaBrowser.Controller/Providers/ImageRefreshOptions.cs
  42. 0 2
      MediaBrowser.Controller/Providers/ItemLookupInfo.cs
  43. 1 3
      MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs
  44. 1 1
      MediaBrowser.Controller/Providers/MetadataResult.cs
  45. 4 3
      MediaBrowser.Controller/Providers/SongInfo.cs
  46. 0 2
      MediaBrowser.Controller/Session/AuthenticationRequest.cs
  47. 0 1
      MediaBrowser.Controller/Session/ISessionManager.cs
  48. 4 4
      MediaBrowser.Controller/Session/SessionInfo.cs
  49. 3 3
      MediaBrowser.Controller/Subtitles/SubtitleSearchRequest.cs
  50. 3 3
      MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs
  51. 4 5
      MediaBrowser.Model/Channels/ChannelFeatures.cs
  52. 10 11
      MediaBrowser.Model/Configuration/LibraryOptions.cs
  53. 7 14
      MediaBrowser.Model/Configuration/MetadataOptions.cs
  54. 4 4
      MediaBrowser.Model/Configuration/MetadataPluginSummary.cs
  55. 21 28
      MediaBrowser.Model/Configuration/ServerConfiguration.cs
  56. 4 4
      MediaBrowser.Model/Configuration/UserConfiguration.cs
  57. 0 17
      MediaBrowser.Model/Connect/ConnectAuthenticationExchangeResult.cs
  58. 0 17
      MediaBrowser.Model/Connect/ConnectAuthenticationResult.cs
  59. 2 2
      MediaBrowser.Model/Connect/ConnectAuthorization.cs
  60. 0 19
      MediaBrowser.Model/Connect/ConnectAuthorizationRequest.cs
  61. 0 16
      MediaBrowser.Model/Devices/DeviceInfo.cs
  62. 0 5
      MediaBrowser.Model/Devices/DeviceQuery.cs
  63. 1 4
      MediaBrowser.Model/Devices/DevicesOptions.cs
  64. 2 6
      MediaBrowser.Model/Dlna/ContainerProfile.cs
  65. 1 2
      MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs
  66. 18 19
      MediaBrowser.Model/Dlna/ResolutionNormalizer.cs
  67. 4 4
      MediaBrowser.Model/Dlna/StreamInfo.cs
  68. 1 3
      MediaBrowser.Model/Dlna/SubtitleProfile.cs
  69. 0 35
      MediaBrowser.Model/Dto/BaseItemDto.cs
  70. 0 38
      MediaBrowser.Model/Dto/ChapterInfoDto.cs
  71. 2 3
      MediaBrowser.Model/Dto/GameSystemSummary.cs
  72. 1 8
      MediaBrowser.Model/Dto/MediaSourceInfo.cs
  73. 6 6
      MediaBrowser.Model/Dto/MetadataEditorInfo.cs
  74. 0 1
      MediaBrowser.Model/Dto/UserDto.cs
  75. 6 6
      MediaBrowser.Model/Entities/LibraryUpdateInfo.cs
  76. 1 1
      MediaBrowser.Model/Entities/VirtualFolderInfo.cs
  77. 1 1
      MediaBrowser.Model/Globalization/CultureDto.cs
  78. 1 1
      MediaBrowser.Model/Library/UserViewQuery.cs
  79. 1 1
      MediaBrowser.Model/LiveTv/LiveTvChannelQuery.cs
  80. 3 3
      MediaBrowser.Model/LiveTv/LiveTvInfo.cs
  81. 9 9
      MediaBrowser.Model/LiveTv/LiveTvOptions.cs
  82. 1 1
      MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs
  83. 0 117
      MediaBrowser.Model/LiveTv/ProgramQuery.cs
  84. 0 73
      MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs
  85. 7 9
      MediaBrowser.Model/MediaInfo/MediaInfo.cs
  86. 0 1
      MediaBrowser.Model/MediaInfo/PlaybackInfoRequest.cs
  87. 4 16
      MediaBrowser.Model/Notifications/NotificationOption.cs
  88. 0 3
      MediaBrowser.Model/Notifications/NotificationRequest.cs
  89. 0 8
      MediaBrowser.Model/Notifications/NotificationServiceInfo.cs
  90. 2 14
      MediaBrowser.Model/Notifications/NotificationTypeInfo.cs
  91. 2 3
      MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs
  92. 2 2
      MediaBrowser.Model/Providers/SubtitleOptions.cs
  93. 6 6
      MediaBrowser.Model/Querying/QueryFilters.cs
  94. 3 3
      MediaBrowser.Model/Search/SearchQuery.cs
  95. 3 3
      MediaBrowser.Model/Session/ClientCapabilities.cs
  96. 0 117
      MediaBrowser.Model/Session/SessionInfoDto.cs
  97. 1 3
      MediaBrowser.Model/Sync/SyncJob.cs
  98. 8 8
      MediaBrowser.Model/Users/UserPolicy.cs
  99. 1 10
      MediaBrowser.Providers/Chapters/ChapterManager.cs

+ 0 - 1
Emby.Server.Implementations/Library/UserManager.cs

@@ -2,7 +2,6 @@
 using MediaBrowser.Common.Net;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Connect;
 using MediaBrowser.Controller.Drawing;
 using MediaBrowser.Controller.Dto;
 using MediaBrowser.Controller.Entities;

+ 1 - 2
MediaBrowser.Api/BaseApiService.cs

@@ -55,12 +55,11 @@ namespace MediaBrowser.Api
             return Request.Headers[name];
         }
 
-        private static readonly string[] EmptyStringArray = Array.Empty<string>();
         public static string[] SplitValue(string value, char delim)
         {
             if (string.IsNullOrWhiteSpace(value))
             {
-                return EmptyStringArray;
+                return Array.Empty<string>();
             }
 
             return value.Split(new[] { delim }, StringSplitOptions.RemoveEmptyEntries);

+ 2 - 3
MediaBrowser.Api/UserService.cs

@@ -1,4 +1,5 @@
-using MediaBrowser.Common.Extensions;
+using MediaBrowser.Controller.Authentication;
+using MediaBrowser.Common.Extensions;
 using MediaBrowser.Common.Net;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Devices;
@@ -10,11 +11,9 @@ using MediaBrowser.Model.Connect;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Users;
 using System;
-using System.Collections.Generic;
 using System.Linq;
 using System.Threading.Tasks;
 using MediaBrowser.Model.Services;
-using MediaBrowser.Controller.Authentication;
 
 namespace MediaBrowser.Api
 {

+ 1 - 5
MediaBrowser.Controller/Authentication/IAuthenticationProvider.cs

@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
+using System.Threading.Tasks;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Model.Users;
 

+ 0 - 7
MediaBrowser.Controller/Chapters/IChapterManager.cs

@@ -1,5 +1,4 @@
 using System.Collections.Generic;
-using System.Threading.Tasks;
 using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Controller.Chapters
@@ -9,12 +8,6 @@ namespace MediaBrowser.Controller.Chapters
     /// </summary>
     public interface IChapterManager
     {
-        /// <summary>
-        /// Gets the chapters.
-        /// </summary>
-        /// <param name="itemId">The item identifier.</param>
-        /// <returns>List{ChapterInfo}.</returns>
-
         /// <summary>
         /// Saves the chapters.
         /// </summary>

+ 2 - 2
MediaBrowser.Controller/Collections/CollectionCreationOptions.cs

@@ -20,8 +20,8 @@ namespace MediaBrowser.Controller.Collections
         public CollectionCreationOptions()
         {
             ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            ItemIdList = new string[] {};
-            UserIds = new Guid[] {};
+            ItemIdList = Array.Empty<string>();
+            UserIds = Array.Empty<Guid>();
         }
     }
 }

+ 0 - 45
MediaBrowser.Controller/Connect/IConnectManager.cs

@@ -1,45 +0,0 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Connect;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Controller.Connect
-{
-    public interface IConnectManager
-    {
-        /// <summary>
-        /// Gets the wan API address.
-        /// </summary>
-        /// <value>The wan API address.</value>
-        string WanApiAddress { get; }
-
-        /// <summary>
-        /// Links the user.
-        /// </summary>
-        /// <param name="userId">The user identifier.</param>
-        /// <param name="connectUsername">The connect username.</param>
-        /// <returns>Task.</returns>
-        Task<UserLinkResult> LinkUser(string userId, string connectUsername);
-
-        /// <summary>
-        /// Removes the link.
-        /// </summary>
-        /// <param name="userId">The user identifier.</param>
-        /// <returns>Task.</returns>
-        Task RemoveConnect(string userId);
-
-        User GetUserFromExchangeToken(string token);
-
-        /// <summary>
-        /// Authenticates the specified username.
-        /// </summary>
-        Task<ConnectAuthenticationResult> Authenticate(string username, string password, string passwordMd5);
-
-        /// <summary>
-        /// Determines whether [is authorization token valid] [the specified token].
-        /// </summary>
-        /// <param name="token">The token.</param>
-        /// <returns><c>true</c> if [is authorization token valid] [the specified token]; otherwise, <c>false</c>.</returns>
-        bool IsAuthorizationTokenValid(string token);
-    }
-}

+ 0 - 1
MediaBrowser.Controller/Dto/IDtoService.cs

@@ -2,7 +2,6 @@
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Querying;
 using System.Collections.Generic;
-using MediaBrowser.Controller.Sync;
 
 namespace MediaBrowser.Controller.Dto
 {

+ 1 - 1
MediaBrowser.Controller/Entities/AggregateFolder.cs

@@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.Entities
     {
         public AggregateFolder()
         {
-            PhysicalLocationsList = new string[] { };
+            PhysicalLocationsList = Array.Empty<string>();
         }
 
         [IgnoreDataMember]

+ 2 - 7
MediaBrowser.Controller/Entities/Audio/Audio.cs

@@ -2,13 +2,8 @@
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.MediaInfo;
 using System;
 using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Threading;
-using MediaBrowser.Common.Extensions;
 using MediaBrowser.Controller.Persistence;
 using MediaBrowser.Model.Serialization;
 
@@ -36,8 +31,8 @@ namespace MediaBrowser.Controller.Entities.Audio
 
         public Audio()
         {
-            Artists = new string[] {};
-            AlbumArtists = new string[] {};
+            Artists = Array.Empty<string>();
+            AlbumArtists = Array.Empty<string>();
         }
 
         public override double GetDefaultPrimaryImageAspectRatio()

+ 2 - 2
MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs

@@ -23,8 +23,8 @@ namespace MediaBrowser.Controller.Entities.Audio
 
         public MusicAlbum()
         {
-            Artists = new string[] {};
-            AlbumArtists = new string[] {};
+            Artists = Array.Empty<string>();
+            AlbumArtists = Array.Empty<string>();
         }
 
         [IgnoreDataMember]

+ 1 - 2
MediaBrowser.Controller/Entities/Audio/MusicArtist.cs

@@ -129,13 +129,12 @@ namespace MediaBrowser.Controller.Entities.Audio
             return base.IsSaveLocalMetadataEnabled();
         }
 
-        private readonly Task _cachedTask = Task.FromResult(true);
         protected override Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
         {
             if (IsAccessedByName)
             {
                 // Should never get in here anyway
-                return _cachedTask;
+                return Task.CompletedTask;
             }
 
             return base.ValidateChildrenInternal(progress, cancellationToken, recursive, refreshChildMetadata, refreshOptions, directoryService);

+ 23 - 17
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -35,24 +35,24 @@ namespace MediaBrowser.Controller.Entities
     /// </summary>
     public abstract class BaseItem : IHasProviderIds, IHasLookupInfo<ItemLookupInfo>
     {
-        protected static MetadataFields[] EmptyMetadataFieldsArray = new MetadataFields[] { };
-        protected static MediaUrl[] EmptyMediaUrlArray = new MediaUrl[] { };
-        protected static ItemImageInfo[] EmptyItemImageInfoArray = new ItemImageInfo[] { };
-        public static readonly LinkedChild[] EmptyLinkedChildArray = new LinkedChild[] { };
+        protected static MetadataFields[] EmptyMetadataFieldsArray = Array.Empty<MetadataFields>();
+        protected static MediaUrl[] EmptyMediaUrlArray = Array.Empty<MediaUrl>();
+        protected static ItemImageInfo[] EmptyItemImageInfoArray = Array.Empty<ItemImageInfo>();
+        public static readonly LinkedChild[] EmptyLinkedChildArray = Array.Empty<LinkedChild>();
 
         protected BaseItem()
         {
-            ThemeSongIds = new Guid[] {};
-            ThemeVideoIds = new Guid[] {};
-            Tags = new string[] {};
-            Genres = new string[] {};
-            Studios = new string[] {};
+            ThemeSongIds = Array.Empty<Guid>();
+            ThemeVideoIds = Array.Empty<Guid>();
+            Tags = Array.Empty<string>();
+            Genres = Array.Empty<string>();
+            Studios = Array.Empty<string>();
             ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
             LockedFields = EmptyMetadataFieldsArray;
             ImageInfos = EmptyItemImageInfoArray;
-            ProductionLocations = new string[] {};
-            RemoteTrailers = new MediaUrl[] { };
-            ExtraIds = new Guid[] {};
+            ProductionLocations = Array.Empty<string>();
+            RemoteTrailers = Array.Empty<MediaUrl>();
+            ExtraIds = Array.Empty<Guid>();
         }
 
         public static readonly char[] SlugReplaceChars = { '?', '/', '&' };
@@ -62,7 +62,6 @@ namespace MediaBrowser.Controller.Entities
         /// The supported image extensions
         /// </summary>
         public static readonly string[] SupportedImageExtensions = { ".png", ".jpg", ".jpeg", ".tbn", ".gif" };
-        public static readonly List<string> SupportedImageExtensionsList = SupportedImageExtensions.ToList();
 
         /// <summary>
         /// The trailer folder name
@@ -2895,6 +2894,10 @@ namespace MediaBrowser.Controller.Entities
             return ThemeVideoIds.Select(LibraryManager.GetItemById).Where(i => i.ExtraType.Equals(Model.Entities.ExtraType.ThemeVideo)).OrderBy(i => i.SortName);
         }
 
+        /// <summary>
+        /// Gets or sets the remote trailers.
+        /// </summary>
+        /// <value>The remote trailers.</value>
         public MediaUrl[] RemoteTrailers { get; set; }
 
         public IEnumerable<BaseItem> GetExtras()
@@ -2913,21 +2916,24 @@ namespace MediaBrowser.Controller.Entities
         }
 
         public virtual bool IsHD { 
-            get{ 
+            get
+            {
                 return Height >= 720;
-            } 
+            }
         }
         public bool IsShortcut{ get; set;}
         public string ShortcutPath{ get; set;}
         public int Width { get; set; }
         public int Height { get; set; }
         public Guid[] ExtraIds { get; set; }
-        public virtual long GetRunTimeTicksForPlayState() {
+        public virtual long GetRunTimeTicksForPlayState()
+        {
             return RunTimeTicks ?? 0;
         }
         // what does this do?
         public static ExtraType[] DisplayExtraTypes = new[] {Model.Entities.ExtraType.ThemeSong, Model.Entities.ExtraType.ThemeVideo };
-        public virtual bool SupportsExternalTransfer {
+        public virtual bool SupportsExternalTransfer
+        {
             get {
                 return false;
             }

+ 3 - 11
MediaBrowser.Controller/Entities/CollectionFolder.cs

@@ -31,18 +31,10 @@ namespace MediaBrowser.Controller.Entities
 
         public CollectionFolder()
         {
-            PhysicalLocationsList = new string[] { };
-            PhysicalFolderIds = new Guid[] { };
+            PhysicalLocationsList = Array.Empty<string>();
+            PhysicalFolderIds = Array.Empty<Guid>();
         }
 
-        //public override double? GetDefaultPrimaryImageAspectRatio()
-        //{
-        //    double value = 16;
-        //    value /= 9;
-
-        //    return value;
-        //}
-
         [IgnoreDataMember]
         public override bool SupportsPlayedStatus
         {
@@ -339,7 +331,7 @@ namespace MediaBrowser.Controller.Entities
         /// <returns>Task.</returns>
         protected override Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
         {
-            return Task.FromResult(true);
+            return Task.CompletedTask;
         }
 
         /// <summary>

+ 3 - 9
MediaBrowser.Controller/Entities/Game.cs

@@ -12,10 +12,10 @@ namespace MediaBrowser.Controller.Entities
     {
         public Game()
         {
-            MultiPartGameFiles = new string[] {};
+            MultiPartGameFiles = Array.Empty<string>();
             RemoteTrailers = EmptyMediaUrlArray;
-            LocalTrailerIds = new Guid[] {};
-            RemoteTrailerIds = new Guid[] {};
+            LocalTrailerIds = Array.Empty<Guid>();
+            RemoteTrailerIds = Array.Empty<Guid>();
         }
 
         public Guid[] LocalTrailerIds { get; set; }
@@ -38,12 +38,6 @@ namespace MediaBrowser.Controller.Entities
             get { return false; }
         }
 
-        /// <summary>
-        /// Gets or sets the remote trailers.
-        /// </summary>
-        /// <value>The remote trailers.</value>
-        public MediaUrl[] RemoteTrailers { get; set; }
-
         /// <summary>
         /// Gets the type of the media.
         /// </summary>

+ 31 - 35
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -4,7 +4,6 @@ using System.Collections.Generic;
 using MediaBrowser.Model.Configuration;
 using System.Linq;
 using MediaBrowser.Controller.Dto;
-using MediaBrowser.Model.Querying;
 
 namespace MediaBrowser.Controller.Entities
 {
@@ -48,7 +47,6 @@ namespace MediaBrowser.Controller.Entities
 
         public string PresentationUniqueKey { get; set; }
         public string Path { get; set; }
-        public string PathNotStartsWith { get; set; }
         public string Name { get; set; }
 
         public string Person { get; set; }
@@ -160,8 +158,6 @@ namespace MediaBrowser.Controller.Entities
         public bool EnableGroupByMetadataKey { get; set; }
         public bool? HasChapterImages { get; set; }
 
-        // why tuple vs value tuple?
-        //public Tuple<string, SortOrder>[] OrderBy { get; set; }
         public ValueTuple<string, SortOrder>[] OrderBy { get; set; } 
 
         public DateTime? MinDateCreated { get; set; }
@@ -180,44 +176,44 @@ namespace MediaBrowser.Controller.Entities
 
         public InternalItemsQuery()
         {
-            AlbumArtistIds = new Guid[] {};
-            AlbumIds = new Guid[] {};
-            AncestorIds = new Guid[] {};
-            ArtistIds = new Guid[] {};
-            BlockUnratedItems = new UnratedItem[] { };
-            BoxSetLibraryFolders = new Guid[] {};
-            ChannelIds = new Guid[] {};
-            ContributingArtistIds = new Guid[] {};
+            AlbumArtistIds = Array.Empty<Guid>();
+            AlbumIds = Array.Empty<Guid>();
+            AncestorIds = Array.Empty<Guid>();
+            ArtistIds = Array.Empty<Guid>();
+            BlockUnratedItems = Array.Empty<UnratedItem>();
+            BoxSetLibraryFolders = Array.Empty<Guid>();
+            ChannelIds = Array.Empty<Guid>();
+            ContributingArtistIds = Array.Empty<Guid>();
             DtoOptions = new DtoOptions();
             EnableTotalRecordCount = true;
-            ExcludeArtistIds = new Guid[] {};
-            ExcludeInheritedTags = new string[] {};
-            ExcludeItemIds = new Guid[] {};
-            ExcludeItemTypes = new string[] {};
+            ExcludeArtistIds = Array.Empty<Guid>();
+            ExcludeInheritedTags = Array.Empty<string>();
+            ExcludeItemIds = Array.Empty<Guid>();
+            ExcludeItemTypes = Array.Empty<string>();
             ExcludeProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            ExcludeTags = new string[] {};
-            GenreIds = new Guid[] {};
-            Genres = new string[] {};
+            ExcludeTags = Array.Empty<string>();
+            GenreIds = Array.Empty<Guid>();
+            Genres = Array.Empty<string>();
             GroupByPresentationUniqueKey = true;
             HasAnyProviderId = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            ImageTypes = new ImageType[] { };
-            IncludeItemTypes = new string[] {};
-            ItemIds = new Guid[] {};
-            MediaTypes = new string[] {};
+            ImageTypes = Array.Empty<ImageType>();
+            IncludeItemTypes = Array.Empty<string>();
+            ItemIds = Array.Empty<Guid>();
+            MediaTypes = Array.Empty<string>();
             MinSimilarityScore = 20;
-            OfficialRatings = new string[] {};
+            OfficialRatings = Array.Empty<string>();
             OrderBy = Array.Empty<ValueTuple<string, SortOrder>>();
-            PersonIds = new Guid[] {};
-            PersonTypes = new string[] {};
-            PresetViews = new string[] {};
-            SeriesStatuses = new SeriesStatus[] { };
-            SourceTypes = new SourceType[] { };
-            StudioIds = new Guid[] {};
-            Tags = new string[] {};
-            TopParentIds = new Guid[] {};
-            TrailerTypes = new TrailerType[] { };
-            VideoTypes = new VideoType[] { };
-            Years = new int[] { };
+            PersonIds = Array.Empty<Guid>();
+            PersonTypes = Array.Empty<string>();
+            PresetViews = Array.Empty<string>();
+            SeriesStatuses = Array.Empty<SeriesStatus>();
+            SourceTypes = Array.Empty<SourceType>();
+            StudioIds = Array.Empty<Guid>();
+            Tags = Array.Empty<string>();
+            TopParentIds = Array.Empty<Guid>();
+            TrailerTypes = Array.Empty<TrailerType>();
+            VideoTypes = Array.Empty<VideoType>();
+            Years = Array.Empty<int>();
         }
 
         public InternalItemsQuery(User user)

+ 2 - 2
MediaBrowser.Controller/Entities/InternalPeopleQuery.cs

@@ -14,8 +14,8 @@ namespace MediaBrowser.Controller.Entities
 
         public InternalPeopleQuery()
         {
-            PersonTypes = new string[] { };
-            ExcludePersonTypes = new string[] { };
+            PersonTypes = Array.Empty<string>();
+            ExcludePersonTypes = Array.Empty<string>();
         }
     }
 }

+ 4 - 15
MediaBrowser.Controller/Entities/Movies/BoxSet.cs

@@ -19,8 +19,8 @@ namespace MediaBrowser.Controller.Entities.Movies
         public BoxSet()
         {
             RemoteTrailers = EmptyMediaUrlArray;
-            LocalTrailerIds = new Guid[] { };
-            RemoteTrailerIds = new Guid[] { };
+            LocalTrailerIds = Array.Empty<Guid>();
+            RemoteTrailerIds = Array.Empty<Guid>();
 
             DisplayOrder = ItemSortBy.PremiereDate;
         }
@@ -52,12 +52,6 @@ namespace MediaBrowser.Controller.Entities.Movies
         public Guid[] LocalTrailerIds { get; set; }
         public Guid[] RemoteTrailerIds { get; set; }
 
-        /// <summary>
-        /// Gets or sets the remote trailers.
-        /// </summary>
-        /// <value>The remote trailers.</value>
-        public MediaUrl[] RemoteTrailers { get; set; }
-
         /// <summary>
         /// Gets or sets the display order.
         /// </summary>
@@ -70,12 +64,7 @@ namespace MediaBrowser.Controller.Entities.Movies
         }
 
         public override double GetDefaultPrimaryImageAspectRatio()
-        {
-            double value = 2;
-            value /= 3;
-
-            return value;
-        }
+            => 2 / 3;
 
         public override UnratedItem GetBlockUnratedType()
         {
@@ -254,7 +243,7 @@ namespace MediaBrowser.Controller.Entities.Movies
                     return FlattenItems(boxset.GetLinkedChildren(), expandedFolders);
                 }
 
-                return new BaseItem[] { };
+                return Array.Empty<BaseItem>();
             }
 
             return new[] { item };

+ 1 - 8
MediaBrowser.Controller/Entities/Movies/Movie.cs

@@ -6,8 +6,6 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
-
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Providers;
 using MediaBrowser.Model.Serialization;
@@ -32,8 +30,6 @@ namespace MediaBrowser.Controller.Entities.Movies
         public Guid[] LocalTrailerIds { get; set; }
         public Guid[] RemoteTrailerIds { get; set; }
 
-        public MediaUrl[] RemoteTrailers { get; set; }
-
         /// <summary>
         /// Gets or sets the name of the TMDB collection.
         /// </summary>
@@ -55,10 +51,7 @@ namespace MediaBrowser.Controller.Entities.Movies
                 return 0;
             }
 
-            double value = 2;
-            value /= 3;
-
-            return value;
+            return 2 / 3;
         }
 
         protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)

+ 1 - 1
MediaBrowser.Controller/Entities/MusicVideo.cs

@@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Entities
 
         public MusicVideo()
         {
-            Artists = new string[] {};
+            Artists = Array.Empty<string>();
         }
 
         [IgnoreDataMember]

+ 3 - 2
MediaBrowser.Controller/Entities/Photo.cs

@@ -58,6 +58,7 @@ namespace MediaBrowser.Controller.Entities
 
         public override double GetDefaultPrimaryImageAspectRatio()
         {
+            // REVIEW: @bond
             if (Width.HasValue && Height.HasValue)
             {
                 double width = Width.Value;
@@ -85,8 +86,8 @@ namespace MediaBrowser.Controller.Entities
             return base.GetDefaultPrimaryImageAspectRatio();
         }
 
-        public int? Width { get; set; }
-        public int? Height { get; set; }
+        public new int? Width { get; set; }
+        public new int? Height { get; set; }
         public string CameraMake { get; set; }
         public string CameraModel { get; set; }
         public string Software { get; set; }

+ 4 - 8
MediaBrowser.Controller/Entities/TV/Episode.cs

@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Providers;
+using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Entities;
 using System;
@@ -19,13 +19,12 @@ namespace MediaBrowser.Controller.Entities.TV
         public Episode()
         {
             RemoteTrailers = EmptyMediaUrlArray;
-            LocalTrailerIds = new Guid[] {};
-            RemoteTrailerIds = new Guid[] {};
+            LocalTrailerIds = Array.Empty<Guid>();
+            RemoteTrailerIds = Array.Empty<Guid>();
         }
 
         public Guid[] LocalTrailerIds { get; set; }
         public Guid[] RemoteTrailerIds { get; set; }
-        public MediaUrl[] RemoteTrailers { get; set; }
 
         /// <summary>
         /// Gets the season in which it aired.
@@ -112,10 +111,7 @@ namespace MediaBrowser.Controller.Entities.TV
                 return 0;
             }
 
-            double value = 16;
-            value /= 9;
-
-            return value;
+            return 16 / 9;
         }
 
         public override List<string> GetUserDataKeys()

+ 4 - 3
MediaBrowser.Controller/Entities/TV/Season.cs

@@ -102,10 +102,11 @@ namespace MediaBrowser.Controller.Entities.TV
             get
             {
                 var seriesId = SeriesId;
-                if (seriesId.Equals(Guid.Empty)) {
+                if (seriesId == Guid.Empty)
+                {
                     seriesId = FindSeriesId();
                 }
-                return !seriesId.Equals(Guid.Empty) ? (LibraryManager.GetItemById(seriesId) as Series) : null;
+                return seriesId == Guid.Empty ? null : (LibraryManager.GetItemById(seriesId) as Series);
             }
         }
 
@@ -227,7 +228,7 @@ namespace MediaBrowser.Controller.Entities.TV
         public Guid FindSeriesId()
         {
             var series = FindParent<Series>();
-            return series == null ? Guid.Empty: series.Id;
+            return series == null ? Guid.Empty : series.Id;
         }
 
         /// <summary>

+ 3 - 5
MediaBrowser.Controller/Entities/TV/Series.cs

@@ -23,9 +23,9 @@ namespace MediaBrowser.Controller.Entities.TV
         public Series()
         {
             RemoteTrailers = EmptyMediaUrlArray;
-            LocalTrailerIds = new Guid[] {};
-            RemoteTrailerIds = new Guid[] {};
-            AirDays = new DayOfWeek[] { };
+            LocalTrailerIds = Array.Empty<Guid>();
+            RemoteTrailerIds = Array.Empty<Guid>();
+            AirDays = Array.Empty<DayOfWeek>();
         }
 
         public DayOfWeek[] AirDays { get; set; }
@@ -73,8 +73,6 @@ namespace MediaBrowser.Controller.Entities.TV
         public Guid[] LocalTrailerIds { get; set; }
         public Guid[] RemoteTrailerIds { get; set; }
 
-        public MediaUrl[] RemoteTrailers { get; set; }
-
         /// <summary>
         /// airdate, dvd or absolute
         /// </summary>

+ 2 - 7
MediaBrowser.Controller/Entities/Trailer.cs

@@ -15,18 +15,13 @@ namespace MediaBrowser.Controller.Entities
     {
         public Trailer()
         {
-            TrailerTypes = new TrailerType[] { };
+            TrailerTypes = Array.Empty<TrailerType>();
         }
 
         public TrailerType[] TrailerTypes { get; set; }
 
         public override double GetDefaultPrimaryImageAspectRatio()
-        {
-            double value = 2;
-            value /= 3;
-
-            return value;
-        }
+            => 2 / 3;
 
         public override UnratedItem GetBlockUnratedType()
         {

+ 4 - 15
MediaBrowser.Controller/Entities/UserView.cs

@@ -1,21 +1,18 @@
 using MediaBrowser.Controller.Playlists;
 using MediaBrowser.Controller.TV;
-using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Querying;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using MediaBrowser.Model.Serialization;
 using System.Threading.Tasks;
-using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.Collections;
 
 namespace MediaBrowser.Controller.Entities
 {
     public class UserView : Folder, IHasCollectionType
     {
         public string ViewType { get; set; }
-        public Guid DisplayParentId { get; set; }
+        public new Guid DisplayParentId { get; set; }
 
         public Guid? UserId { get; set; }
 
@@ -68,14 +65,6 @@ namespace MediaBrowser.Controller.Entities
             }
         }
 
-        //public override double? GetDefaultPrimaryImageAspectRatio()
-        //{
-        //    double value = 16;
-        //    value /= 9;
-
-        //    return value;
-        //}
-
         public override int GetChildCount(User user)
         {
             return GetChildren(user, true).Count;
@@ -161,8 +150,8 @@ namespace MediaBrowser.Controller.Entities
 
         public static bool IsEligibleForGrouping(Folder folder)
         {
-            var collectionFolder = folder as ICollectionFolder;
-            return collectionFolder != null && IsEligibleForGrouping(collectionFolder.CollectionType);
+            return folder is ICollectionFolder collectionFolder
+                    && IsEligibleForGrouping(collectionFolder.CollectionType);
         }
 
         private static string[] ViewTypesEligibleForGrouping = new string[]
@@ -195,7 +184,7 @@ namespace MediaBrowser.Controller.Entities
 
         protected override Task ValidateChildrenInternal(IProgress<double> progress, System.Threading.CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, Providers.MetadataRefreshOptions refreshOptions, Providers.IDirectoryService directoryService)
         {
-            return Task.FromResult(true);
+            return Task.CompletedTask;
         }
 
         [IgnoreDataMember]

+ 10 - 18
MediaBrowser.Controller/Entities/Video.cs

@@ -10,7 +10,6 @@ using System.Globalization;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
-using MediaBrowser.Common.Extensions;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Serialization;
 using MediaBrowser.Model.Extensions;
@@ -132,8 +131,6 @@ namespace MediaBrowser.Controller.Entities
         public bool HasSubtitles { get; set; }
 
         public bool IsPlaceHolder { get; set; }
-        public bool IsShortcut { get; set; }
-        public string ShortcutPath { get; set; }
 
         /// <summary>
         /// Gets or sets the default index of the video stream.
@@ -173,7 +170,7 @@ namespace MediaBrowser.Controller.Entities
             }
             else
             {
-                return new string[] {};
+                return Array.Empty<string>();
             }
             return mediaEncoder.GetPlayableStreamFileNames(Path, videoType);
         }
@@ -186,9 +183,9 @@ namespace MediaBrowser.Controller.Entities
 
         public Video()
         {
-            AdditionalParts = new string[] {};
-            LocalAlternateVersions = new string[] {};
-            SubtitleFiles = new string[] {};
+            AdditionalParts = Array.Empty<string>();
+            LocalAlternateVersions = Array.Empty<string>();
+            SubtitleFiles = Array.Empty<string>();
             LinkedAlternateVersions = EmptyLinkedChildArray;
         }
 
@@ -215,10 +212,10 @@ namespace MediaBrowser.Controller.Entities
             {
                 if (!string.IsNullOrEmpty(PrimaryVersionId))
                 {
-                    var item = LibraryManager.GetItemById(PrimaryVersionId) as Video;
-                    if (item != null)
+                    var item = LibraryManager.GetItemById(PrimaryVersionId);
+                    if (item is Video video)
                     {
-                        return item.MediaSourceCount;
+                        return video.MediaSourceCount;
                     }
                 }
                 return LinkedAlternateVersions.Length + LocalAlternateVersions.Length + 1;
@@ -366,7 +363,7 @@ namespace MediaBrowser.Controller.Entities
         /// Gets the additional parts.
         /// </summary>
         /// <returns>IEnumerable{Video}.</returns>
-        public IEnumerable<Video> GetAdditionalParts()
+        public IOrderedEnumerable<Video> GetAdditionalParts()
         {
             return GetAdditionalPartIds()
                 .Select(i => LibraryManager.GetItemById(i))
@@ -420,8 +417,7 @@ namespace MediaBrowser.Controller.Entities
         {
             var updateType = base.UpdateFromResolvedItem(newItem);
 
-            var newVideo = newItem as Video;
-            if (newVideo != null)
+            if (newItem is Video newVideo)
             {
                 if (!AdditionalParts.SequenceEqual(newVideo.AdditionalParts, StringComparer.Ordinal))
                 {
@@ -463,7 +459,7 @@ namespace MediaBrowser.Controller.Entities
                     .Select(i => i.FullName)
                     .ToArray();
             }
-            return new string[] {};
+            return Array.Empty<string>();
         }
 
         /// <summary>
@@ -618,9 +614,5 @@ namespace MediaBrowser.Controller.Entities
 
             return list;
         }
-
-        public static bool IsHD (Video video) {
-            return video.Height >= 720;
-        }
     }
 }

+ 0 - 1
MediaBrowser.Controller/Library/IUserDataManager.cs

@@ -5,7 +5,6 @@ using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Entities;
 using System;
 using System.Threading;
-using MediaBrowser.Model.Querying;
 
 namespace MediaBrowser.Controller.Library
 {

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

@@ -2,10 +2,7 @@
 using MediaBrowser.Controller.Providers;
 using System;
 using System.Collections.Generic;
-using System.IO;
 using System.Linq;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.IO;
 
@@ -169,6 +166,7 @@ namespace MediaBrowser.Controller.Library
             AdditionalLocations.Add(path);
         }
 
+        // REVIEW: @bond
         /// <summary>
         /// Gets the physical locations.
         /// </summary>
@@ -177,7 +175,7 @@ namespace MediaBrowser.Controller.Library
         {
             get
             {
-                var paths = string.IsNullOrEmpty(Path) ? new string[] { } : new[] { Path };
+                var paths = string.IsNullOrEmpty(Path) ? Array.Empty<string>() : new[] { Path };
                 return AdditionalLocations == null ? paths : paths.Concat(AdditionalLocations).ToArray();
             }
         }
@@ -261,7 +259,7 @@ namespace MediaBrowser.Controller.Library
         }
 
         /// <summary>
-        /// Equalses the specified args.
+        /// Equals the specified args.
         /// </summary>
         /// <param name="args">The args.</param>
         /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>

+ 6 - 37
MediaBrowser.Controller/LiveTv/LiveTvProgram.cs

@@ -47,52 +47,21 @@ namespace MediaBrowser.Controller.LiveTv
             return list;
         }
 
-        public static double GetDefaultPrimaryImageAspectRatio(IHasProgramAttributes item)
+        private static string EmbyServiceName = "Emby";
+        public override double GetDefaultPrimaryImageAspectRatio()
         {
-            var serviceName = item.ServiceName;
+            var serviceName = ServiceName;
 
-            if (item.IsMovie)
+            if (string.Equals(serviceName, EmbyServiceName, StringComparison.OrdinalIgnoreCase) || string.Equals(serviceName, "Next Pvr", StringComparison.OrdinalIgnoreCase))
             {
-                if (string.Equals(serviceName, EmbyServiceName, StringComparison.OrdinalIgnoreCase) || string.Equals(serviceName, "Next Pvr", StringComparison.OrdinalIgnoreCase))
-                {
-                    double value = 2;
-                    value /= 3;
-
-                    return value;
-                }
-                else
-                {
-                    double value = 16;
-                    value /= 9;
-
-                    return value;
-                }
+                return 2 / 3;
             }
             else
             {
-                if (string.Equals(serviceName, EmbyServiceName, StringComparison.OrdinalIgnoreCase) || string.Equals(serviceName, "Next Pvr", StringComparison.OrdinalIgnoreCase))
-                {
-                    double value = 2;
-                    value /= 3;
-
-                    return value;
-                }
-                else
-                {
-                    double value = 16;
-                    value /= 9;
-
-                    return value;
-                }
+                return 16 / 9;
             }
         }
 
-        private static string EmbyServiceName = "Emby";
-        public override double GetDefaultPrimaryImageAspectRatio()
-        {
-            return GetDefaultPrimaryImageAspectRatio(this);
-        }
-
         [IgnoreDataMember]
         public override SourceType SourceType
         {

+ 2 - 2
MediaBrowser.Controller/LiveTv/TimerInfo.cs

@@ -10,11 +10,11 @@ namespace MediaBrowser.Controller.LiveTv
     {
         public TimerInfo()
         {
-            Genres = new string[] { };
+            Genres = Array.Empty<string>();
             KeepUntil = KeepUntil.UntilDeleted;
             ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
             SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            Tags = new string[] { };
+            Tags = Array.Empty<string>();
         }
 
         public Dictionary<string, string> ProviderIds { get; set; }

+ 12 - 21
MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

@@ -3,7 +3,6 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
 using System.Linq;
-using System.Threading;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Dlna;
@@ -12,8 +11,6 @@ using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.MediaInfo;
 using MediaBrowser.Model.Extensions;
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Model.Reflection;
 
 namespace MediaBrowser.Controller.MediaEncoding
 {
@@ -343,19 +340,19 @@ namespace MediaBrowser.Controller.MediaEncoding
 
         public int GetVideoProfileScore(string profile)
         {
-            var list = new []
+            string[] list =
             {
-                "Constrained Baseline",
+                "ConstrainedBaseline",
                 "Baseline",
                 "Extended",
                 "Main",
                 "High",
-                "Progressive High",
-                "Constrained High"
+                "ProgressiveHigh",
+                "ConstrainedHigh"
             };
 
             // strip spaces because they may be stripped out on the query string
-            return Array.FindIndex(list, t => string.Equals(t.Replace(" ", ""), profile.Replace(" ", ""), StringComparison.OrdinalIgnoreCase));
+            return Array.FindIndex(list, t => string.Equals(t, profile.Replace(" ", ""), StringComparison.OrdinalIgnoreCase));
         }
 
         public string GetInputPathArgument(EncodingJobInfo state)
@@ -516,18 +513,12 @@ namespace MediaBrowser.Controller.MediaEncoding
 
         public string NormalizeTranscodingLevel(string videoCodec, string level)
         {
-            double requestLevel;
-
             // Clients may direct play higher than level 41, but there's no reason to transcode higher
-            if (double.TryParse(level, NumberStyles.Any, _usCulture, out requestLevel))
+            if (double.TryParse(level, NumberStyles.Any, _usCulture, out double requestLevel)
+                && string.Equals(videoCodec, "h264", StringComparison.OrdinalIgnoreCase)
+                && requestLevel > 41)
             {
-                if (string.Equals(videoCodec, "h264", StringComparison.OrdinalIgnoreCase))
-                {
-                    if (requestLevel > 41)
-                    {
-                        return "41";
-                    }
-                }
+                return "41";
             }
 
             return level;
@@ -623,7 +614,7 @@ namespace MediaBrowser.Controller.MediaEncoding
             // h264 (h264_qsv)
             else if (string.Equals(videoEncoder, "h264_qsv", StringComparison.OrdinalIgnoreCase))
             {
-                string[] valid_h264_qsv = new string[] { "veryslow", "slower", "slow", "medium", "fast", "faster", "veryfast" };
+                string[] valid_h264_qsv = { "veryslow", "slower", "slow", "medium", "fast", "faster", "veryfast" };
 
                 if (valid_h264_qsv.Contains(encodingOptions.H264Preset, StringComparer.OrdinalIgnoreCase))
                 {
@@ -1958,12 +1949,12 @@ namespace MediaBrowser.Controller.MediaEncoding
                 }
                 else
                 {
-                    state.PlayableStreamFileNames = new string[] { };
+                    state.PlayableStreamFileNames = Array.Empty<string>();
                 }
             }
             else
             {
-                state.PlayableStreamFileNames = new string[] { };
+                state.PlayableStreamFileNames = Array.Empty<string>();
             }
 
             if (mediaSource.Timestamp.HasValue)

+ 5 - 5
MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs

@@ -207,7 +207,7 @@ namespace MediaBrowser.Controller.MediaEncoding
                 }
             }
 
-            return new string[] { };
+            return Array.Empty<string>();
         }
 
         public string GetRequestedLevel(string codec)
@@ -317,10 +317,10 @@ namespace MediaBrowser.Controller.MediaEncoding
             _logger = logger;
             TranscodingType = jobType;
             RemoteHttpHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            PlayableStreamFileNames = new string[] { };
-            SupportedAudioCodecs = new string[] { };
-            SupportedVideoCodecs = new string[] { };
-            SupportedSubtitleCodecs = new string[] { };
+            PlayableStreamFileNames = Array.Empty<string>();
+            SupportedAudioCodecs = Array.Empty<string>();
+            SupportedVideoCodecs = Array.Empty<string>();
+            SupportedSubtitleCodecs = Array.Empty<string>();
         }
 
         public bool IsSegmentedLiveStream

+ 0 - 1
MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs

@@ -10,7 +10,6 @@ namespace MediaBrowser.Controller.MediaEncoding
     public class EncodingJobOptions : BaseEncodingJobOptions
     {
         public string OutputDirectory { get; set; }
-
         public string ItemId { get; set; }
         public string MediaSourceId { get; set; }
         public string AudioCodec { get; set; }

+ 1 - 1
MediaBrowser.Controller/MediaEncoding/MediaInfoRequest.cs

@@ -18,7 +18,7 @@ namespace MediaBrowser.Controller.MediaEncoding
 
         public MediaInfoRequest()
         {
-            PlayableStreamFileNames = new string[] {};
+            PlayableStreamFileNames = Array.Empty<string>();
         }
     }
 }

+ 1 - 7
MediaBrowser.Controller/Net/AuthorizationInfo.cs

@@ -1,7 +1,6 @@
 using MediaBrowser.Controller.Entities;
 using System;
 
-
 namespace MediaBrowser.Controller.Net
 {
     public class AuthorizationInfo
@@ -12,12 +11,7 @@ namespace MediaBrowser.Controller.Net
         /// <value>The user identifier.</value>
         public Guid UserId { 
             get {
-                if (User == null) {
-                    return Guid.Empty;
-                }
-                else {
-                    return User.Id;
-                }
+                return User == null ? Guid.Empty : User.Id;
             }
         }
                 

+ 0 - 2
MediaBrowser.Controller/Net/WebSocketConnectEventArgs.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Collections.Specialized;
 using MediaBrowser.Model.Services;
 
 namespace MediaBrowser.Controller.Net
@@ -7,7 +6,6 @@ namespace MediaBrowser.Controller.Net
     /// <summary>
     /// Class WebSocketConnectEventArgs
     /// </summary>
-
     public class WebSocketConnectingEventArgs : EventArgs
     {
         /// <summary>

+ 0 - 1
MediaBrowser.Controller/Playlists/IPlaylistManager.cs

@@ -4,7 +4,6 @@ using System.Collections.Generic;
 using System.Threading.Tasks;
 using System;
 
-
 namespace MediaBrowser.Controller.Playlists
 {
     public interface IPlaylistManager

+ 13 - 16
MediaBrowser.Controller/Playlists/Playlist.cs

@@ -15,14 +15,14 @@ namespace MediaBrowser.Controller.Playlists
 {
     public class Playlist : Folder, IHasShares
     {
-        public static string[] SupportedExtensions = new string[] {
-
-            ".m3u",
-            ".m3u8",
-            ".pls",
-            ".wpl",
-            ".zpl"
-        };
+        public static string[] SupportedExtensions =
+            {
+                ".m3u",
+                ".m3u8",
+                ".pls",
+                ".wpl",
+                ".zpl"
+            };
 
         public Guid OwnerUserId { get; set; }
 
@@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.Playlists
 
         public Playlist()
         {
-            Shares = new Share[] { };
+            Shares = Array.Empty<Share>();
         }
 
         [IgnoreDataMember]
@@ -131,7 +131,7 @@ namespace MediaBrowser.Controller.Playlists
 
         protected override Task ValidateChildrenInternal(IProgress<double> progress, CancellationToken cancellationToken, bool recursive, bool refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)
         {
-            return Task.FromResult(true);
+            return Task.CompletedTask;
         }
 
         public override List<BaseItem> GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query)
@@ -186,8 +186,7 @@ namespace MediaBrowser.Controller.Playlists
 
         private static IEnumerable<BaseItem> GetPlaylistItems(BaseItem item, User user, string mediaType, DtoOptions options)
         {
-            var musicGenre = item as MusicGenre;
-            if (musicGenre != null)
+            if (item is MusicGenre musicGenre)
             {
                 return LibraryManager.GetItemList(new InternalItemsQuery(user)
                 {
@@ -199,8 +198,7 @@ namespace MediaBrowser.Controller.Playlists
                 });
             }
 
-            var musicArtist = item as MusicArtist;
-            if (musicArtist != null)
+            if (item is MusicArtist musicArtist)
             {
                 return LibraryManager.GetItemList(new InternalItemsQuery(user)
                 {
@@ -212,8 +210,7 @@ namespace MediaBrowser.Controller.Playlists
                 });
             }
 
-            var folder = item as Folder;
-            if (folder != null)
+            if (item is Folder folder)
             {
                 var query = new InternalItemsQuery(user)
                 {

+ 2 - 2
MediaBrowser.Controller/Providers/AlbumInfo.cs

@@ -22,7 +22,7 @@ namespace MediaBrowser.Controller.Providers
         {
             ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
             SongInfos = new List<SongInfo>();
-            AlbumArtists = EmptyStringArray;
+            AlbumArtists = Array.Empty<string>();
         }
     }
-}
+}

+ 2 - 2
MediaBrowser.Controller/Providers/ImageRefreshOptions.cs

@@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.Providers
             ImageRefreshMode = MetadataRefreshMode.Default;
             DirectoryService = directoryService;
 
-            ReplaceImages = new ImageType[] { };
+            ReplaceImages = Array.Empty<ImageType>();
             IsAutomated = true;
         }
 
@@ -30,4 +30,4 @@ namespace MediaBrowser.Controller.Providers
                    (ReplaceAllImages || ReplaceImages.Contains(type));
         }
     }
-}
+}

+ 0 - 2
MediaBrowser.Controller/Providers/ItemLookupInfo.cs

@@ -6,8 +6,6 @@ namespace MediaBrowser.Controller.Providers
 {
     public class ItemLookupInfo : IHasProviderIds
     {
-        protected static string[] EmptyStringArray = new string[] { };
-        
         /// <summary>
         /// Gets or sets the name.
         /// </summary>

+ 1 - 3
MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs

@@ -1,8 +1,6 @@
 using System;
-using System.Collections.Generic;
 using System.Linq;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Model.IO;
 using Microsoft.Extensions.Logging;
 using MediaBrowser.Model.Providers;
@@ -47,7 +45,7 @@ namespace MediaBrowser.Controller.Providers
             {
                 if (RefreshPaths == null)
                 {
-                    RefreshPaths = new string[] { };
+                    RefreshPaths = Array.Empty<string>();
                 }
 
                 RefreshPaths = copy.RefreshPaths.ToArray();

+ 1 - 1
MediaBrowser.Controller/Providers/MetadataResult.cs

@@ -74,4 +74,4 @@ namespace MediaBrowser.Controller.Providers
             return userData;
         }
     }
-}
+}

+ 4 - 3
MediaBrowser.Controller/Providers/SongInfo.cs

@@ -1,3 +1,4 @@
+using System;
 
 namespace MediaBrowser.Controller.Providers
 {
@@ -9,8 +10,8 @@ namespace MediaBrowser.Controller.Providers
 
         public SongInfo()
         {
-            Artists = EmptyStringArray;
-            AlbumArtists = EmptyStringArray;
+            Artists = Array.Empty<string>();
+            AlbumArtists = Array.Empty<string>();
         }
     }
-}
+}

+ 0 - 2
MediaBrowser.Controller/Session/AuthenticationRequest.cs

@@ -1,6 +1,5 @@
 using System;
 
-
 namespace MediaBrowser.Controller.Session
 {
     public class AuthenticationRequest
@@ -9,7 +8,6 @@ namespace MediaBrowser.Controller.Session
         public Guid UserId { get; set; }
         public string Password { get; set; }
         public string PasswordSha1 { get; set; }
-        public string PasswordMd5 { get; set; }
         public string App { get; set; }
         public string AppVersion { get; set; }
         public string DeviceId { get; set; }

+ 0 - 1
MediaBrowser.Controller/Session/ISessionManager.cs

@@ -5,7 +5,6 @@ using MediaBrowser.Controller.Security;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Events;
 using MediaBrowser.Model.Session;
-using MediaBrowser.Model.Users;
 using System;
 using System.Collections.Generic;
 using System.Threading;

+ 4 - 4
MediaBrowser.Controller/Session/SessionInfo.cs

@@ -22,9 +22,9 @@ namespace MediaBrowser.Controller.Session
             _sessionManager = sessionManager;
             _logger = logger;
 
-            AdditionalUsers = new SessionUserInfo[] { };
+            AdditionalUsers = Array.Empty<SessionUserInfo>();
             PlayState = new PlayerStateInfo();
-            SessionControllers = new ISessionController[] { };
+            SessionControllers = Array.Empty<ISessionController>();
         }
 
         public PlayerStateInfo PlayState { get; set; }
@@ -49,7 +49,7 @@ namespace MediaBrowser.Controller.Session
             {
                 if (Capabilities == null)
                 {
-                    return new string[] {};
+                    return Array.Empty<string>();
                 }
                 return Capabilities.PlayableMediaTypes;
             }
@@ -363,7 +363,7 @@ namespace MediaBrowser.Controller.Session
             StopAutomaticProgress();
 
             var controllers = SessionControllers.ToList();
-            SessionControllers = new ISessionController[] { };
+            SessionControllers = Array.Empty<ISessionController>();
 
             foreach (var controller in controllers)
             {

+ 3 - 3
MediaBrowser.Controller/Subtitles/SubtitleSearchRequest.cs

@@ -32,8 +32,8 @@ namespace MediaBrowser.Controller.Subtitles
             SearchAllProviders = true;
             ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
 
-            DisabledSubtitleFetchers = new string[] {};
-            SubtitleFetcherOrder = new string[] {};
+            DisabledSubtitleFetchers = Array.Empty<string>();
+            SubtitleFetcherOrder = Array.Empty<string>();
         }
     }
-}
+}

+ 3 - 3
MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs

@@ -77,12 +77,12 @@ namespace MediaBrowser.LocalMetadata.Images
                 return directoryService.GetFileSystemEntries(path)
                 .Where(i => BaseItem.SupportedImageExtensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase) || i.IsDirectory)
 
-                .OrderBy(i => BaseItem.SupportedImageExtensionsList.IndexOf(i.Extension ?? string.Empty));
+                .OrderBy(i => Array.IndexOf(BaseItem.SupportedImageExtensions, i.Extension ?? string.Empty));
             }
 
             return directoryService.GetFiles(path)
                 .Where(i => BaseItem.SupportedImageExtensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase))
-                .OrderBy(i => BaseItem.SupportedImageExtensionsList.IndexOf(i.Extension ?? string.Empty));
+                .OrderBy(i => Array.IndexOf(BaseItem.SupportedImageExtensions, i.Extension ?? string.Empty));
         }
 
         public List<LocalImageInfo> GetImages(BaseItem item, IDirectoryService directoryService)
@@ -106,7 +106,7 @@ namespace MediaBrowser.LocalMetadata.Images
             IEnumerable<FileSystemMetadata> files = paths.SelectMany(i => _fileSystem.GetFiles(i, BaseItem.SupportedImageExtensions, true, false));
 
             files = files
-                .OrderBy(i => BaseItem.SupportedImageExtensionsList.IndexOf(i.Extension ?? string.Empty));
+                .OrderBy(i => Array.IndexOf(BaseItem.SupportedImageExtensions, i.Extension ?? string.Empty));
 
             var list = new List<LocalImageInfo>();
 

+ 4 - 5
MediaBrowser.Model/Channels/ChannelFeatures.cs

@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System;
 
 namespace MediaBrowser.Model.Channels
 {
@@ -76,10 +76,9 @@ namespace MediaBrowser.Model.Channels
 
         public ChannelFeatures()
         {
-            MediaTypes = new ChannelMediaType[] { };
-            ContentTypes = new ChannelMediaContentType[] { };
-
-            DefaultSortFields = new ChannelItemSortField[] { };
+            MediaTypes = Array.Empty<ChannelMediaType>();
+            ContentTypes = Array.Empty<ChannelMediaContentType>();
+            DefaultSortFields = Array.Empty<ChannelItemSortField>();
         }
     }
 }

+ 10 - 11
MediaBrowser.Model/Configuration/LibraryOptions.cs

@@ -6,7 +6,6 @@ namespace MediaBrowser.Model.Configuration
 {
     public class LibraryOptions
     {
-        public bool EnableArchiveMediaFiles { get; set; }
         public bool EnablePhotos { get; set; }
         public bool EnableRealtimeMonitor { get; set; }
         public bool EnableChapterImageExtraction { get; set; }
@@ -65,10 +64,10 @@ namespace MediaBrowser.Model.Configuration
 
         public LibraryOptions()
         {
-            TypeOptions = new TypeOptions[] { };
-            DisabledSubtitleFetchers = new string[] { };
-            SubtitleFetcherOrder = new string[] { };
-            DisabledLocalMetadataReaders = new string[] { };
+            TypeOptions = Array.Empty<TypeOptions>();
+            DisabledSubtitleFetchers = Array.Empty<string>();
+            SubtitleFetcherOrder = Array.Empty<string>();
+            DisabledLocalMetadataReaders = Array.Empty<string>();
 
             SkipSubtitlesIfAudioTrackMatches = true;
             RequirePerfectSubtitleMatch = true;
@@ -76,7 +75,7 @@ namespace MediaBrowser.Model.Configuration
             EnablePhotos = true;
             SaveSubtitlesWithMedia = true;
             EnableRealtimeMonitor = true;
-            PathInfos = new MediaPathInfo[] { };
+            PathInfos = Array.Empty<MediaPathInfo>();
             EnableInternetProviders = true;
             EnableAutomaticSeriesGrouping = true;
             SeasonZeroDisplayName = "Specials";
@@ -141,11 +140,11 @@ namespace MediaBrowser.Model.Configuration
 
         public TypeOptions()
         {
-            MetadataFetchers = new string[] { };
-            MetadataFetcherOrder = new string[] { };
-            ImageFetchers = new string[] { };
-            ImageFetcherOrder = new string[] { };
-            ImageOptions = new ImageOption[] { };
+            MetadataFetchers = Array.Empty<string>();
+            MetadataFetcherOrder = Array.Empty<string>();
+            ImageFetchers = Array.Empty<string>();
+            ImageFetcherOrder = Array.Empty<string>();
+            ImageOptions = Array.Empty<ImageOption>();
         }
 
         public static Dictionary<string, ImageOption[]> DefaultImageOptions = new Dictionary<string, ImageOption[]>

+ 7 - 14
MediaBrowser.Model/Configuration/MetadataOptions.cs

@@ -1,5 +1,4 @@
-using MediaBrowser.Model.Extensions;
-using System;
+using System;
 
 namespace MediaBrowser.Model.Configuration
 {
@@ -21,18 +20,12 @@ namespace MediaBrowser.Model.Configuration
 
         public MetadataOptions()
         {
-            DisabledMetadataSavers = new string[] { };
-            LocalMetadataReaderOrder = new string[] { };
-
-            DisabledMetadataFetchers = new string[] { };
-            MetadataFetcherOrder = new string[] { };
-            DisabledImageFetchers = new string[] { };
-            ImageFetcherOrder = new string[] { };
-        }
-
-        public bool IsMetadataSaverEnabled(string name)
-        {
-            return !ListHelper.ContainsIgnoreCase(DisabledMetadataSavers, name);
+            DisabledMetadataSavers = Array.Empty<string>();
+            LocalMetadataReaderOrder = Array.Empty<string>();
+            DisabledMetadataFetchers = Array.Empty<string>();
+            MetadataFetcherOrder = Array.Empty<string>();
+            DisabledImageFetchers = Array.Empty<string>();
+            ImageFetcherOrder = Array.Empty<string>();
         }
     }
 }

+ 4 - 4
MediaBrowser.Model/Configuration/MetadataPluginSummary.cs

@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System;
 using MediaBrowser.Model.Entities;
 
 namespace MediaBrowser.Model.Configuration
@@ -25,8 +25,8 @@ namespace MediaBrowser.Model.Configuration
 
         public MetadataPluginSummary()
         {
-            SupportedImageTypes = new ImageType[] { };
-            Plugins = new MetadataPlugin[] { };
+            SupportedImageTypes = Array.Empty<ImageType>();
+            Plugins = Array.Empty<MetadataPlugin>();
         }
     }
-}
+}

+ 21 - 28
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -173,8 +173,6 @@ namespace MediaBrowser.Model.Configuration
 
         public int RemoteClientBitrateLimit { get; set; }
 
-        public int SchemaVersion { get; set; }
-
         public bool EnableFolderView { get; set; }
         public bool EnableGroupingIntoCollections { get; set; }
         public bool DisplaySpecialsWithinSeasons { get; set; }
@@ -201,13 +199,13 @@ namespace MediaBrowser.Model.Configuration
         /// </summary>
         public ServerConfiguration()
         {
-            UninstalledPlugins = new string[] { };
-            RemoteIPFilter = new string[] { };
-            LocalNetworkSubnets = new string[] { };
-            LocalNetworkAddresses = new string[] { };
-            CodecsUsed = new string[] { };
+            UninstalledPlugins = Array.Empty<string>();
+            RemoteIPFilter = Array.Empty<string>();
+            LocalNetworkSubnets = Array.Empty<string>();
+            LocalNetworkAddresses = Array.Empty<string>();
+            CodecsUsed = Array.Empty<string>();
             ImageExtractionTimeoutMs = 0;
-            PathSubstitutions = new PathSubstitution[] { };
+            PathSubstitutions = Array.Empty<PathSubstitution>();
             EnableSimpleArtistDetection = true;
 
             DisplaySpecialsWithinSeasons = true;
@@ -235,7 +233,7 @@ namespace MediaBrowser.Model.Configuration
 
             LibraryMonitorDelay = 60;
 
-            ContentTypes = new NameValuePair[] { };
+            ContentTypes = Array.Empty<NameValuePair>();
 
             PreferredMetadataLanguage = "en";
             MetadataCountryCode = "US";
@@ -248,56 +246,51 @@ namespace MediaBrowser.Model.Configuration
 
             MetadataOptions = new[]
             {
-                new MetadataOptions {ItemType = "Book"},
-
-                new MetadataOptions
+                new MetadataOptions()
+                {
+                    ItemType = "Book"
+                },
+                new MetadataOptions()
                 {
                     ItemType = "Movie"
                 },
-
                 new MetadataOptions
                 {
                     ItemType = "MusicVideo",
-                    DisabledMetadataFetchers = new []{ "The Open Movie Database" },
-                    DisabledImageFetchers = new []{ "The Open Movie Database", "FanArt" }
+                    DisabledMetadataFetchers = new [] { "The Open Movie Database" },
+                    DisabledImageFetchers = new [] { "The Open Movie Database", "FanArt" }
                 },
-
                 new MetadataOptions
                 {
                     ItemType = "Series",
-                    DisabledMetadataFetchers = new []{ "TheMovieDb" },
-                    DisabledImageFetchers = new []{ "TheMovieDb" }
+                    DisabledMetadataFetchers = new [] { "TheMovieDb" },
+                    DisabledImageFetchers = new [] { "TheMovieDb" }
                 },
-
                 new MetadataOptions
                 {
                     ItemType = "MusicAlbum",
-                    DisabledMetadataFetchers = new []{ "TheAudioDB" }
+                    DisabledMetadataFetchers = new [] { "TheAudioDB" }
                 },
-
                 new MetadataOptions
                 {
                     ItemType = "MusicArtist",
-                    DisabledMetadataFetchers = new []{ "TheAudioDB" }
+                    DisabledMetadataFetchers = new [] { "TheAudioDB" }
                 },
-
                 new MetadataOptions
                 {
                     ItemType = "BoxSet"
                 },
-
                 new MetadataOptions
                 {
                     ItemType = "Season",
-                    DisabledMetadataFetchers = new []{ "TheMovieDb" },
+                    DisabledMetadataFetchers = new [] { "TheMovieDb" },
                     DisabledImageFetchers = new [] { "FanArt" }
                 },
-
                 new MetadataOptions
                 {
                     ItemType = "Episode",
-                    DisabledMetadataFetchers = new []{ "The Open Movie Database", "TheMovieDb" },
-                    DisabledImageFetchers = new []{ "The Open Movie Database", "TheMovieDb" }
+                    DisabledMetadataFetchers = new [] { "The Open Movie Database", "TheMovieDb" },
+                    DisabledImageFetchers = new [] { "The Open Movie Database", "TheMovieDb" }
                 }
             };
         }

+ 4 - 4
MediaBrowser.Model/Configuration/UserConfiguration.cs

@@ -57,10 +57,10 @@ namespace MediaBrowser.Model.Configuration
             HidePlayedInLatest = true;
             PlayDefaultAudioTrack = true;
 
-            LatestItemsExcludes = new string[] {};
-            OrderedViews = new string[] {};
-            MyMediaExcludes = new string[] {};
-            GroupedFolders = new string[] {};
+            LatestItemsExcludes = Array.Empty<string>();
+            OrderedViews = Array.Empty<string>();
+            MyMediaExcludes = Array.Empty<string>();
+            GroupedFolders = Array.Empty<string>();
         }
     }
 }

+ 0 - 17
MediaBrowser.Model/Connect/ConnectAuthenticationExchangeResult.cs

@@ -1,17 +0,0 @@
-
-namespace MediaBrowser.Model.Connect
-{
-    public class ConnectAuthenticationExchangeResult
-    {
-        /// <summary>
-        /// Gets or sets the local user identifier.
-        /// </summary>
-        /// <value>The local user identifier.</value>
-        public string LocalUserId { get; set; }
-        /// <summary>
-        /// Gets or sets the access token.
-        /// </summary>
-        /// <value>The access token.</value>
-        public string AccessToken { get; set; }
-    }
-}

+ 0 - 17
MediaBrowser.Model/Connect/ConnectAuthenticationResult.cs

@@ -1,17 +0,0 @@
-
-namespace MediaBrowser.Model.Connect
-{
-    public class ConnectAuthenticationResult
-    {
-        /// <summary>
-        /// Gets or sets the user.
-        /// </summary>
-        /// <value>The user.</value>
-        public ConnectUser User { get; set; }
-        /// <summary>
-        /// Gets or sets the access token.
-        /// </summary>
-        /// <value>The access token.</value>
-        public string AccessToken { get; set; }
-    }
-}

+ 2 - 2
MediaBrowser.Model/Connect/ConnectAuthorization.cs

@@ -14,8 +14,8 @@ namespace MediaBrowser.Model.Connect
 
         public ConnectAuthorization()
         {
-            EnabledLibraries = new string[] {};
-            EnabledChannels = new string[] {};
+            EnabledLibraries = Array.Empty<string>();
+            EnabledChannels = Array.Empty<string>();
         }
     }
 }

+ 0 - 19
MediaBrowser.Model/Connect/ConnectAuthorizationRequest.cs

@@ -1,19 +0,0 @@
-using System;
-
-namespace MediaBrowser.Model.Connect
-{
-    public class ConnectAuthorizationRequest
-    {
-        public string SendingUserId { get; set; }
-        public string ConnectUserName { get; set; }
-        public string[] EnabledLibraries { get; set; }
-        public bool EnableLiveTv { get; set; }
-        public string[] EnabledChannels { get; set; }
-
-        public ConnectAuthorizationRequest()
-        {
-            EnabledLibraries = new string[] {};
-            EnabledChannels = new string[] {};
-        }
-    }
-}

+ 0 - 16
MediaBrowser.Model/Devices/DeviceInfo.cs

@@ -5,22 +5,6 @@ namespace MediaBrowser.Model.Devices
 {
     public class DeviceInfo
     {
-        /// <summary>
-        /// Gets or sets the name of the reported.
-        /// </summary>
-        /// <value>The name of the reported.</value>
-        public string ReportedName { get; set; }
-        /// <summary>
-        /// Gets or sets the name of the custom.
-        /// </summary>
-        /// <value>The name of the custom.</value>
-        public string CustomName { get; set; }
-        /// <summary>
-        /// Gets or sets the camera upload path.
-        /// </summary>
-        /// <value>The camera upload path.</value>
-        public string CameraUploadPath { get; set; }
-
         public string Name { get; set; }
 
         /// <summary>

+ 0 - 5
MediaBrowser.Model/Devices/DeviceQuery.cs

@@ -5,11 +5,6 @@ namespace MediaBrowser.Model.Devices
 {
     public class DeviceQuery
     {
-        /// <summary>
-        /// Gets or sets a value indicating whether [supports unique identifier].
-        /// </summary>
-        /// <value><c>null</c> if [supports unique identifier] contains no value, <c>true</c> if [supports unique identifier]; otherwise, <c>false</c>.</value>
-        public bool? SupportsPersistentIdentifier { get; set; }
         /// <summary>
         /// Gets or sets a value indicating whether [supports synchronize].
         /// </summary>

+ 1 - 4
MediaBrowser.Model/Devices/DevicesOptions.cs

@@ -10,15 +10,12 @@ namespace MediaBrowser.Model.Devices
 
         public DevicesOptions()
         {
-            EnabledCameraUploadDevices = new string[] {};
+            EnabledCameraUploadDevices = Array.Empty<string>();
         }
     }
 
     public class DeviceOptions
     {
-        public string[] EnabledCameraUploadDevices { get; set; }
-        public string CameraUploadPath { get; set; }
-        public bool EnableCameraUploadSubfolders { get; set; }
         public string CustomName { get; set; }
     }
 }

+ 2 - 6
MediaBrowser.Model/Dlna/ContainerProfile.cs

@@ -1,7 +1,5 @@
 using System;
-using System.Collections.Generic;
 using System.Xml.Serialization;
-using MediaBrowser.Model.Dlna;
 using MediaBrowser.Model.Extensions;
 
 namespace MediaBrowser.Model.Dlna
@@ -17,7 +15,7 @@ namespace MediaBrowser.Model.Dlna
 
         public ContainerProfile()
         {
-            Conditions = new ProfileCondition[] { };
+            Conditions = Array.Empty<ProfileCondition>();
         }
 
         public string[] GetContainers()
@@ -25,13 +23,11 @@ namespace MediaBrowser.Model.Dlna
             return SplitValue(Container);
         }
 
-        private static readonly string[] EmptyStringArray = Array.Empty<string>();
-
         public static string[] SplitValue(string value)
         {
             if (string.IsNullOrEmpty(value))
             {
-                return EmptyStringArray;
+                return Array.Empty<string>();
             }
 
             return value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

+ 1 - 2
MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs

@@ -1,7 +1,6 @@
 using MediaBrowser.Model.MediaInfo;
 using System;
 using System.Collections.Generic;
-using System.Linq;
 
 namespace MediaBrowser.Model.Dlna
 {
@@ -28,7 +27,7 @@ namespace MediaBrowser.Model.Dlna
             DlnaFlags flagValue = DlnaFlags.BackgroundTransferMode |
                             DlnaFlags.InteractiveTransferMode |
                             DlnaFlags.DlnaV15;
-            
+
             string dlnaflags = string.Format(";DLNA.ORG_FLAGS={0}",
              DlnaMaps.FlagsToString(flagValue));
 

+ 18 - 19
MediaBrowser.Model/Dlna/ResolutionNormalizer.cs

@@ -1,13 +1,12 @@
 using System;
-using System.Collections.Generic;
 using MediaBrowser.Model.Extensions;
 
 namespace MediaBrowser.Model.Dlna
 {
     public class ResolutionNormalizer
     {
-        private static readonly ResolutionConfiguration[] Configurations = 
-            new []
+        private static readonly ResolutionConfiguration[] Configurations =
+            new[]
             {
                 new ResolutionConfiguration(426, 320000),
                 new ResolutionConfiguration(640, 400000),
@@ -20,24 +19,24 @@ namespace MediaBrowser.Model.Dlna
         public static ResolutionOptions Normalize(int? inputBitrate,
             int? unused1,
             int? unused2,
-			int outputBitrate,
-			string inputCodec,
+            int outputBitrate,
+            string inputCodec,
             string outputCodec,
             int? maxWidth,
             int? maxHeight)
         {
-			// If the bitrate isn't changing, then don't downlscale the resolution
-			if (inputBitrate.HasValue && outputBitrate >= inputBitrate.Value) 
-			{
-				if (maxWidth.HasValue || maxHeight.HasValue) 
-				{
-					return new ResolutionOptions
-					{
-						MaxWidth = maxWidth,
-						MaxHeight = maxHeight
-					};
-				}
-			}
+            // If the bitrate isn't changing, then don't downlscale the resolution
+            if (inputBitrate.HasValue && outputBitrate >= inputBitrate.Value)
+            {
+                if (maxWidth.HasValue || maxHeight.HasValue)
+                {
+                    return new ResolutionOptions
+                    {
+                        MaxWidth = maxWidth,
+                        MaxHeight = maxHeight
+                    };
+                }
+            }
 
             var resolutionConfig = GetResolutionConfiguration(outputBitrate);
             if (resolutionConfig != null)
@@ -90,8 +89,8 @@ namespace MediaBrowser.Model.Dlna
         {
             var inputScaleFactor = GetVideoBitrateScaleFactor(inputVideoCodec);
             var outputScaleFactor = GetVideoBitrateScaleFactor(outputVideoCodec);
-            var scaleFactor = outputScaleFactor/inputScaleFactor;
-            var newBitrate = scaleFactor*bitrate;
+            var scaleFactor = outputScaleFactor / inputScaleFactor;
+            var newBitrate = scaleFactor * bitrate;
 
             return Convert.ToInt32(newBitrate);
         }

+ 4 - 4
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -18,10 +18,10 @@ namespace MediaBrowser.Model.Dlna
     {
         public StreamInfo()
         {
-            AudioCodecs = new string[] { };
-            VideoCodecs = new string[] { };
-            SubtitleCodecs = new string[] { };
-            TranscodeReasons = new TranscodeReason[] { };
+            AudioCodecs = Array.Empty<string>();
+            VideoCodecs = Array.Empty<string>();
+            SubtitleCodecs = Array.Empty<string>();
+            TranscodeReasons = Array.Empty<TranscodeReason>();
             StreamOptions = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
         }
 

+ 1 - 3
MediaBrowser.Model/Dlna/SubtitleProfile.cs

@@ -1,7 +1,5 @@
 using MediaBrowser.Model.Extensions;
-using System.Collections.Generic;
 using System.Xml.Serialization;
-using MediaBrowser.Model.Dlna;
 
 namespace MediaBrowser.Model.Dlna
 {
@@ -43,4 +41,4 @@ namespace MediaBrowser.Model.Dlna
             return languages.Length == 0 || ListHelper.ContainsIgnoreCase(languages, subLanguage);
         }
     }
-}
+}

+ 0 - 35
MediaBrowser.Model/Dto/BaseItemDto.cs

@@ -4,10 +4,8 @@ using MediaBrowser.Model.Extensions;
 using MediaBrowser.Model.Library;
 using MediaBrowser.Model.LiveTv;
 using MediaBrowser.Model.Providers;
-using MediaBrowser.Model.Sync;
 using System;
 using System.Collections.Generic;
-using MediaBrowser.Model.Serialization;
 
 namespace MediaBrowser.Model.Dto
 {
@@ -67,7 +65,6 @@ namespace MediaBrowser.Model.Dto
         public int? AirsBeforeSeasonNumber { get; set; }
         public int? AirsAfterSeasonNumber { get; set; }
         public int? AirsBeforeEpisodeNumber { get; set; }
-        public bool? DisplaySpecialsWithSeasons { get; set; }
         public bool? CanDelete { get; set; }
         public bool? CanDownload { get; set; }
 
@@ -156,7 +153,6 @@ namespace MediaBrowser.Model.Dto
         /// <value>The channel identifier.</value>
         public Guid ChannelId { get; set; }
         public string ChannelName { get; set; }
-        public string ServiceName { get; set; }
 
         /// <summary>
         /// Gets or sets the overview.
@@ -479,26 +475,6 @@ namespace MediaBrowser.Model.Dto
         public int? PartCount { get; set; }
         public int? MediaSourceCount { get; set; }
 
-        /// <summary>
-        /// Determines whether the specified type is type.
-        /// </summary>
-        /// <param name="type">The type.</param>
-        /// <returns><c>true</c> if the specified type is type; otherwise, <c>false</c>.</returns>
-        public bool IsType(Type type)
-        {
-            return IsType(type.Name);
-        }
-
-        /// <summary>
-        /// Determines whether the specified type is type.
-        /// </summary>
-        /// <param name="type">The type.</param>
-        /// <returns><c>true</c> if the specified type is type; otherwise, <c>false</c>.</returns>
-        public bool IsType(string type)
-        {
-            return StringHelper.EqualsIgnoreCase(Type, type);
-        }
-
         /// <summary>
         /// Gets or sets the image tags.
         /// </summary>
@@ -601,12 +577,6 @@ namespace MediaBrowser.Model.Dto
         /// <value>The end date.</value>
         public DateTime? EndDate { get; set; }
 
-        /// <summary>
-        /// Gets or sets the home page URL.
-        /// </summary>
-        /// <value>The home page URL.</value>
-        public string HomePageUrl { get; set; }
-
         /// <summary>
         /// Gets or sets the locked fields.
         /// </summary>
@@ -677,11 +647,6 @@ namespace MediaBrowser.Model.Dto
         public double? Altitude { get; set; }
         public int? IsoSpeedRating { get; set; }
 
-        /// <summary>
-        /// Used by RecordingGroup
-        /// </summary>
-        public int? RecordingCount { get; set; }
-
         /// <summary>
         /// Gets or sets the series timer identifier.
         /// </summary>

+ 0 - 38
MediaBrowser.Model/Dto/ChapterInfoDto.cs

@@ -1,38 +0,0 @@
-using MediaBrowser.Model.Serialization;
-
-namespace MediaBrowser.Model.Dto
-{
-    /// <summary>
-    /// Class ChapterInfo
-    /// </summary>
-    public class ChapterInfoDto
-    {
-        /// <summary>
-        /// Gets or sets the start position ticks.
-        /// </summary>
-        /// <value>The start position ticks.</value>
-        public long StartPositionTicks { get; set; }
-
-        /// <summary>
-        /// Gets or sets the name.
-        /// </summary>
-        /// <value>The name.</value>
-        public string Name { get; set; }
-
-        /// <summary>
-        /// Gets or sets the image tag.
-        /// </summary>
-        /// <value>The image tag.</value>
-        public string ImageTag { get; set; }
-
-        /// <summary>
-        /// Gets a value indicating whether this instance has image.
-        /// </summary>
-        /// <value><c>true</c> if this instance has image; otherwise, <c>false</c>.</value>
-        [IgnoreDataMember]
-        public bool HasImage
-        {
-            get { return ImageTag != null; }
-        }
-    }
-}

+ 2 - 3
MediaBrowser.Model/Dto/GameSystemSummary.cs

@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System;
+using System;
 
 namespace MediaBrowser.Model.Dto
 {
@@ -43,7 +42,7 @@ namespace MediaBrowser.Model.Dto
         /// </summary>
         public GameSystemSummary()
         {
-            GameFileExtensions = new string[] {};
+            GameFileExtensions = Array.Empty<string>();
         }
     }
 }

+ 1 - 8
MediaBrowser.Model/Dto/MediaSourceInfo.cs

@@ -1,5 +1,4 @@
 using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Extensions;
 using MediaBrowser.Model.MediaInfo;
 using System.Collections.Generic;
 using MediaBrowser.Model.Serialization;
@@ -73,7 +72,7 @@ namespace MediaBrowser.Model.Dto
 
         public MediaSourceInfo()
         {
-            Formats = new string[] { };
+            Formats = Array.Empty<string>();
             MediaStreams = new List<MediaStream>();
             RequiredHttpHeaders = new Dictionary<string, string>();
             SupportsTranscoding = true;
@@ -115,12 +114,6 @@ namespace MediaBrowser.Model.Dto
         public int? DefaultAudioStreamIndex { get; set; }
         public int? DefaultSubtitleStreamIndex { get; set; }
 
-        [IgnoreDataMember]
-        public MediaStream DefaultAudioStream
-        {
-            get { return GetDefaultAudioStream(DefaultAudioStreamIndex); }
-        }
-
         public MediaStream GetDefaultAudioStream(int? defaultIndex)
         {
             if (defaultIndex.HasValue)

+ 6 - 6
MediaBrowser.Model/Dto/MetadataEditorInfo.cs

@@ -1,7 +1,7 @@
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Globalization;
 using MediaBrowser.Model.Providers;
-using System.Collections.Generic;
+using System;
 
 namespace MediaBrowser.Model.Dto
 {
@@ -17,11 +17,11 @@ namespace MediaBrowser.Model.Dto
 
         public MetadataEditorInfo()
         {
-            ParentalRatingOptions = new ParentalRating[] { };
-            Countries = new CountryInfo[] { };
-            Cultures = new CultureDto[] { };
-            ExternalIdInfos = new ExternalIdInfo[] { };
-            ContentTypeOptions = new NameValuePair[] { };
+            ParentalRatingOptions = Array.Empty<ParentalRating>();
+            Countries = Array.Empty<CountryInfo>();
+            Cultures = Array.Empty<CultureDto>();
+            ExternalIdInfos = Array.Empty<ExternalIdInfo>();
+            ContentTypeOptions = Array.Empty<NameValuePair>();
         }
     }
 }

+ 0 - 1
MediaBrowser.Model/Dto/UserDto.cs

@@ -2,7 +2,6 @@
 using MediaBrowser.Model.Connect;
 using MediaBrowser.Model.Users;
 using System;
-using MediaBrowser.Model.Serialization;
 
 namespace MediaBrowser.Model.Dto
 {

+ 6 - 6
MediaBrowser.Model/Entities/LibraryUpdateInfo.cs

@@ -51,12 +51,12 @@ namespace MediaBrowser.Model.Entities
         /// </summary>
         public LibraryUpdateInfo()
         {
-            FoldersAddedTo = new string[] { };
-            FoldersRemovedFrom = new string[] { };
-            ItemsAdded = new string[] { };
-            ItemsRemoved = new string[] { };
-            ItemsUpdated = new string[] { };
-            CollectionFolders = new string[] { };
+            FoldersAddedTo = Array.Empty<string>();
+            FoldersRemovedFrom = Array.Empty<string>();
+            ItemsAdded = Array.Empty<string>();
+            ItemsRemoved = Array.Empty<string>();
+            ItemsUpdated = Array.Empty<string>();
+            CollectionFolders = Array.Empty<string>();
         }
     }
 }

+ 1 - 1
MediaBrowser.Model/Entities/VirtualFolderInfo.cs

@@ -34,7 +34,7 @@ namespace MediaBrowser.Model.Entities
         /// </summary>
         public VirtualFolderInfo()
         {
-            Locations = new string[] {};
+            Locations = Array.Empty<string>();
         }
 
         /// <summary>

+ 1 - 1
MediaBrowser.Model/Globalization/CultureDto.cs

@@ -46,7 +46,7 @@ namespace MediaBrowser.Model.Globalization
 
         public CultureDto()
         {
-            ThreeLetterISOLanguageNames = new string[] {};
+            ThreeLetterISOLanguageNames = Array.Empty<string>();
         }
     }
 }

+ 1 - 1
MediaBrowser.Model/Library/UserViewQuery.cs

@@ -27,7 +27,7 @@ namespace MediaBrowser.Model.Library
         public UserViewQuery()
         {
             IncludeExternalContent = true;
-            PresetViews = new string[] {};
+            PresetViews = Array.Empty<string>();
         }
     }
 }

+ 1 - 1
MediaBrowser.Model/LiveTv/LiveTvChannelQuery.cs

@@ -98,7 +98,7 @@ namespace MediaBrowser.Model.LiveTv
         public LiveTvChannelQuery()
         {
             EnableUserData = true;
-            SortBy = new string[] {};
+            SortBy = Array.Empty<string>();
         }
     }
 }

+ 3 - 3
MediaBrowser.Model/LiveTv/LiveTvInfo.cs

@@ -25,8 +25,8 @@ namespace MediaBrowser.Model.LiveTv
 
         public LiveTvInfo()
         {
-            Services = new LiveTvServiceInfo[] { };
-            EnabledUsers = new string[] {};
+            Services = Array.Empty<LiveTvServiceInfo>();
+            EnabledUsers = Array.Empty<string>();
         }
     }
-}
+}

+ 9 - 9
MediaBrowser.Model/LiveTv/LiveTvOptions.cs

@@ -25,9 +25,9 @@ namespace MediaBrowser.Model.LiveTv
 
         public LiveTvOptions()
         {
-            TunerHosts = new TunerHostInfo[] { };
-            ListingProviders = new ListingsProviderInfo[] { };
-            MediaLocationsCreated = new string[] { };
+            TunerHosts = Array.Empty<TunerHostInfo>();
+            ListingProviders = Array.Empty<ListingsProviderInfo>();
+            MediaLocationsCreated = Array.Empty<string>();
             RecordingPostProcessorArguments = "\"{path}\"";
         }
     }
@@ -76,13 +76,13 @@ namespace MediaBrowser.Model.LiveTv
 
         public ListingsProviderInfo()
         {
-            NewsCategories = new string[] { "news", "journalism", "documentary", "current affairs" };
-            SportsCategories = new string[] { "sports", "basketball", "baseball", "football" };
-            KidsCategories = new string[] { "kids", "family", "children", "childrens", "disney" };
-            MovieCategories = new string[] { "movie" };
-            EnabledTuners = new string[] { };
+            NewsCategories = new [] { "news", "journalism", "documentary", "current affairs" };
+            SportsCategories = new [] { "sports", "basketball", "baseball", "football" };
+            KidsCategories = new [] { "kids", "family", "children", "childrens", "disney" };
+            MovieCategories = new [] { "movie" };
+            EnabledTuners = Array.Empty<string>();
             EnableAllTuners = true;
-            ChannelMappings = new NameValuePair[] {};
+            ChannelMappings = Array.Empty<NameValuePair>();
         }
     }
 }

+ 1 - 1
MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs

@@ -52,7 +52,7 @@ namespace MediaBrowser.Model.LiveTv
 
         public LiveTvServiceInfo()
         {
-            Tuners = new string[] { };
+            Tuners = Array.Empty<string>();
         }
     }
 }

+ 0 - 117
MediaBrowser.Model/LiveTv/ProgramQuery.cs

@@ -1,117 +0,0 @@
-using MediaBrowser.Model.Entities;
-using System;
-using MediaBrowser.Model.Querying;
-
-namespace MediaBrowser.Model.LiveTv
-{
-    /// <summary>
-    /// Class ProgramQuery.
-    /// </summary>
-    public class ProgramQuery
-    {
-        public ProgramQuery()
-        {
-            ChannelIds = new Guid[] { };
-            OrderBy = new Tuple<string, SortOrder>[] { };
-            Genres = new string[] {};
-            GenreIds = new Guid[] { };
-            EnableTotalRecordCount = true;
-            EnableUserData = true;
-        }
-
-        public bool EnableTotalRecordCount { get; set; }
-        public bool EnableUserData { get; set; }
-
-        /// <summary>
-        /// Fields to return within the items, in addition to basic information
-        /// </summary>
-        /// <value>The fields.</value>
-        public ItemFields[] Fields { get; set; }
-        public bool? EnableImages { get; set; }
-        public int? ImageTypeLimit { get; set; }
-        public ImageType[] EnableImageTypes { get; set; }
-        
-        /// <summary>
-        /// Gets or sets the channel ids.
-        /// </summary>
-        /// <value>The channel ids.</value>
-        public Guid[] ChannelIds { get; set; }
-
-        /// <summary>
-        /// Gets or sets the user identifier.
-        /// </summary>
-        /// <value>The user identifier.</value>
-        public string UserId { get; set; }
-        public string SeriesTimerId { get; set; }
-        public string Name { get; set; }
-
-        /// <summary>
-        /// The earliest date for which a program starts to return
-        /// </summary>
-        public DateTime? MinStartDate { get; set; }
-
-        /// <summary>
-        /// The latest date for which a program starts to return
-        /// </summary>
-        public DateTime? MaxStartDate { get; set; }
-
-        /// <summary>
-        /// The earliest date for which a program ends to return
-        /// </summary>
-        public DateTime? MinEndDate { get; set; }
-
-        /// <summary>
-        /// The latest date for which a program ends to return
-        /// </summary>
-        public DateTime? MaxEndDate { get; set; }
-
-        /// <summary>
-        /// Used to specific whether to return news or not
-        /// </summary>
-        /// <remarks>If set to null, all programs will be returned</remarks>
-        public bool? IsNews { get; set; }
-
-        /// <summary>
-        /// Used to specific whether to return movies or not
-        /// </summary>
-        /// <remarks>If set to null, all programs will be returned</remarks>
-        public bool? IsMovie { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is kids.
-        /// </summary>
-        /// <value><c>null</c> if [is kids] contains no value, <c>true</c> if [is kids]; otherwise, <c>false</c>.</value>
-        public bool? IsKids { get; set; }
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is sports.
-        /// </summary>
-        /// <value><c>null</c> if [is sports] contains no value, <c>true</c> if [is sports]; otherwise, <c>false</c>.</value>
-        public bool? IsSports { get; set; }
-        
-        /// <summary>
-        /// Skips over a given number of items within the results. Use for paging.
-        /// </summary>
-        public int? StartIndex { get; set; }
-        public bool? IsSeries { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance has aired.
-        /// </summary>
-        /// <value><c>null</c> if [has aired] contains no value, <c>true</c> if [has aired]; otherwise, <c>false</c>.</value>
-        public bool? HasAired { get; set; }
-
-        /// <summary>
-        /// The maximum number of items to return
-        /// </summary>
-        public int? Limit { get; set; }
-
-        public Tuple<string, SortOrder>[] OrderBy { get; set; }
-
-        /// <summary>
-        /// Limit results to items containing specific genres
-        /// </summary>
-        /// <value>The genres.</value>
-        public Guid[] GenreIds { get; set; }
-        public string[] Genres { get; set; }
-    }
-}

+ 0 - 73
MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs

@@ -1,73 +0,0 @@
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Querying;
-using System;
-
-namespace MediaBrowser.Model.LiveTv
-{
-    public class RecommendedProgramQuery
-    {
-        /// <summary>
-        /// Fields to return within the items, in addition to basic information
-        /// </summary>
-        /// <value>The fields.</value>
-        public ItemFields[] Fields { get; set; }
-        public bool? EnableImages { get; set; }
-        public int? ImageTypeLimit { get; set; }
-        public ImageType[] EnableImageTypes { get; set; }
-        public Guid[] GenreIds { get; set; }
-
-        public bool EnableTotalRecordCount { get; set; }
-
-        public RecommendedProgramQuery()
-        {
-            EnableTotalRecordCount = true;
-            GenreIds = new Guid[] { };
-        }
-
-        /// <summary>
-        /// Gets or sets the user identifier.
-        /// </summary>
-        /// <value>The user identifier.</value>
-        public string UserId { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is airing.
-        /// </summary>
-        /// <value><c>true</c> if this instance is airing; otherwise, <c>false</c>.</value>
-        public bool? IsAiring { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance has aired.
-        /// </summary>
-        /// <value><c>null</c> if [has aired] contains no value, <c>true</c> if [has aired]; otherwise, <c>false</c>.</value>
-        public bool? HasAired { get; set; }
-
-        /// <summary>
-        /// The maximum number of items to return
-        /// </summary>
-        /// <value>The limit.</value>
-        public int? Limit { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is movie.
-        /// </summary>
-        /// <value><c>null</c> if [is movie] contains no value, <c>true</c> if [is movie]; otherwise, <c>false</c>.</value>
-        public bool? IsNews { get; set; }
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is movie.
-        /// </summary>
-        /// <value><c>null</c> if [is movie] contains no value, <c>true</c> if [is movie]; otherwise, <c>false</c>.</value>
-        public bool? IsMovie { get; set; }
-        public bool? IsSeries { get; set; }
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is kids.
-        /// </summary>
-        /// <value><c>null</c> if [is kids] contains no value, <c>true</c> if [is kids]; otherwise, <c>false</c>.</value>
-        public bool? IsKids { get; set; }
-        /// <summary>
-        /// Gets or sets a value indicating whether this instance is sports.
-        /// </summary>
-        /// <value><c>null</c> if [is sports] contains no value, <c>true</c> if [is sports]; otherwise, <c>false</c>.</value>
-        public bool? IsSports { get; set; }
-    }
-}

+ 7 - 9
MediaBrowser.Model/MediaInfo/MediaInfo.cs

@@ -7,8 +7,6 @@ namespace MediaBrowser.Model.MediaInfo
 {
     public class MediaInfo : MediaSourceInfo, IHasProviderIds
     {
-        private static readonly string[] EmptyStringArray = new string[] {};
-
         public ChapterInfo[] Chapters { get; set; }
 
         /// <summary>
@@ -56,13 +54,13 @@ namespace MediaBrowser.Model.MediaInfo
 
         public MediaInfo()
         {
-            Chapters = new ChapterInfo[] { };
-            Artists = new string[] {};
-            AlbumArtists = EmptyStringArray;
-            Studios = new string[] {};
-            Genres = new string[] {};
-            People = new BaseItemPerson[] { };
+            Chapters = Array.Empty<ChapterInfo>();
+            Artists = Array.Empty<string>();
+            AlbumArtists = Array.Empty<string>();
+            Studios = Array.Empty<string>();
+            Genres = Array.Empty<string>();
+            People = Array.Empty<BaseItemPerson>();
             ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
         }
     }
-}
+}

+ 0 - 1
MediaBrowser.Model/MediaInfo/PlaybackInfoRequest.cs

@@ -1,5 +1,4 @@
 using MediaBrowser.Model.Dlna;
-using System.Collections.Generic;
 using System;
 
 namespace MediaBrowser.Model.MediaInfo

+ 4 - 16
MediaBrowser.Model/Notifications/NotificationOption.cs

@@ -21,18 +21,6 @@ namespace MediaBrowser.Model.Notifications
         /// </summary>
         /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>
         public bool Enabled { get; set; }
-
-        /// <summary>
-        /// Gets or sets the title format string.
-        /// </summary>
-        /// <value>The title format string.</value>
-        public string Title { get; set; }
-
-        /// <summary>
-        /// Gets or sets the description.
-        /// </summary>
-        /// <value>The description.</value>
-        public string Description { get; set; }
         
         /// <summary>
         /// Gets or sets the disabled services.
@@ -48,9 +36,9 @@ namespace MediaBrowser.Model.Notifications
 
         public NotificationOption()
         {
-            DisabledServices = new string[] {};
-            DisabledMonitorUsers = new string[] {};
-            SendToUsers = new string[] {};
+            DisabledServices = Array.Empty<string>();
+            DisabledMonitorUsers = Array.Empty<string>();
+            SendToUsers = Array.Empty<string>();
         }
     }
-}
+}

+ 0 - 3
MediaBrowser.Model/Notifications/NotificationRequest.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Collections.Generic;
 
 namespace MediaBrowser.Model.Notifications
 {
@@ -22,8 +21,6 @@ namespace MediaBrowser.Model.Notifications
         /// </summary>
         public string NotificationType { get; set; }
 
-        public Dictionary<string, string> Variables { get; set; }
-
         public SendToUserType? SendToUserMode { get; set; }
 
         public NotificationRequest()

+ 0 - 8
MediaBrowser.Model/Notifications/NotificationServiceInfo.cs

@@ -1,8 +0,0 @@
-namespace MediaBrowser.Model.Notifications
-{
-    public class NotificationServiceInfo
-    {
-        public string Name { get; set; }
-        public string Id { get; set; }
-    }
-}

+ 2 - 14
MediaBrowser.Model/Notifications/NotificationTypeInfo.cs

@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System;
+using System;
 
 namespace MediaBrowser.Model.Notifications
 {
@@ -14,16 +13,5 @@ namespace MediaBrowser.Model.Notifications
         public string Category { get; set; }
 
         public bool IsBasedOnUserEvent { get; set; }
-
-        public string DefaultTitle { get; set; }
-
-        public string DefaultDescription { get; set; }
-        
-        public string[] Variables { get; set; }
-
-        public NotificationTypeInfo()
-        {
-            Variables = new string[] {};
-        }
     }
-}
+}

+ 2 - 3
MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs

@@ -1,11 +1,10 @@
-using System.Collections.Generic;
-using System;
+using System;
 
 namespace MediaBrowser.Model.Playlists
 {
     public class PlaylistCreationRequest
     {
-         public string Name { get; set; }
+        public string Name { get; set; }
 
         public Guid[] ItemIdList { get; set; }
 

+ 2 - 2
MediaBrowser.Model/Providers/SubtitleOptions.cs

@@ -18,10 +18,10 @@ namespace MediaBrowser.Model.Providers
 
         public SubtitleOptions()
         {
-            DownloadLanguages = new string[] {};
+            DownloadLanguages = Array.Empty<string>();
 
             SkipIfAudioTrackMatches = true;
             RequirePerfectMatch = true;
         }
     }
-}
+}

+ 6 - 6
MediaBrowser.Model/Querying/QueryFilters.cs

@@ -12,10 +12,10 @@ namespace MediaBrowser.Model.Querying
 
         public QueryFiltersLegacy()
         {
-            Genres = new string[] {};
-            Tags = new string[] {};
-            OfficialRatings = new string[] {};
-            Years = new int[] { };
+            Genres = Array.Empty<string>();
+            Tags = Array.Empty<string>();
+            OfficialRatings = Array.Empty<string>();
+            Years = Array.Empty<int>();
         }
     }
     public class QueryFilters
@@ -25,8 +25,8 @@ namespace MediaBrowser.Model.Querying
 
         public QueryFilters()
         {
-            Tags = new string[] {};
-            Genres = new NameGuidPair[] { };
+            Tags = Array.Empty<string>();
+            Genres = Array.Empty<NameGuidPair>();
         }
     }
 }

+ 3 - 3
MediaBrowser.Model/Search/SearchQuery.cs

@@ -57,9 +57,9 @@ namespace MediaBrowser.Model.Search
             IncludePeople = true;
             IncludeStudios = true;
 
-            MediaTypes = new string[] {};
-            IncludeItemTypes = new string[] {};
-            ExcludeItemTypes = new string[] {};
+            MediaTypes = Array.Empty<string>();
+            IncludeItemTypes = Array.Empty<string>();
+            ExcludeItemTypes = Array.Empty<string>();
         }
     }
 }

+ 3 - 3
MediaBrowser.Model/Session/ClientCapabilities.cs

@@ -25,9 +25,9 @@ namespace MediaBrowser.Model.Session
 
         public ClientCapabilities()
         {
-            PlayableMediaTypes = new string[] {};
-            SupportedCommands = new string[] {};
+            PlayableMediaTypes = Array.Empty<string>();
+            SupportedCommands = Array.Empty<string>();
             SupportsPersistentIdentifier = true;
         }
     }
-}
+}

+ 0 - 117
MediaBrowser.Model/Session/SessionInfoDto.cs

@@ -1,117 +0,0 @@
-using MediaBrowser.Model.Dto;
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Model.Session
-{
-    public class SessionInfoDto
-    {
-        /// <summary>
-        /// Gets or sets the supported commands.
-        /// </summary>
-        /// <value>The supported commands.</value>
-        public string[] SupportedCommands { get; set; }
-
-        /// <summary>
-        /// Gets or sets the playable media types.
-        /// </summary>
-        /// <value>The playable media types.</value>
-        public string[] PlayableMediaTypes { get; set; }
-        
-        /// <summary>
-        /// Gets or sets the id.
-        /// </summary>
-        /// <value>The id.</value>
-        public string Id { get; set; }
-
-        public string ServerId { get; set; }
-
-        /// <summary>
-        /// Gets or sets the user id.
-        /// </summary>
-        /// <value>The user id.</value>
-        public string UserId { get; set; }
-
-        /// <summary>
-        /// Gets or sets the user primary image tag.
-        /// </summary>
-        /// <value>The user primary image tag.</value>
-        public string UserPrimaryImageTag { get; set; }
-
-        public string RemoteEndPoint { get; set; }
-
-        /// <summary>
-        /// Gets or sets the name of the user.
-        /// </summary>
-        /// <value>The name of the user.</value>
-        public string UserName { get; set; }
-
-        /// <summary>
-        /// Gets or sets the additional users present.
-        /// </summary>
-        /// <value>The additional users present.</value>
-        public SessionUserInfo[] AdditionalUsers { get; set; }
-
-        /// <summary>
-        /// Gets or sets the application version.
-        /// </summary>
-        /// <value>The application version.</value>
-        public string ApplicationVersion { get; set; }
-        
-        /// <summary>
-        /// Gets or sets the type of the client.
-        /// </summary>
-        /// <value>The type of the client.</value>
-        public string Client { get; set; }
-
-        /// <summary>
-        /// Gets or sets the last activity date.
-        /// </summary>
-        /// <value>The last activity date.</value>
-        public DateTime LastActivityDate { get; set; }
-        
-        /// <summary>
-        /// Gets or sets the name of the device.
-        /// </summary>
-        /// <value>The name of the device.</value>
-        public string DeviceName { get; set; }
-
-        public string DeviceType { get; set; }
-
-        /// <summary>
-        /// Gets or sets the now playing item.
-        /// </summary>
-        /// <value>The now playing item.</value>
-        public BaseItemDto NowPlayingItem { get; set; }
-
-        /// <summary>
-        /// Gets or sets the device id.
-        /// </summary>
-        /// <value>The device id.</value>
-        public string DeviceId { get; set; }
-
-        /// <summary>
-        /// Gets or sets the application icon URL.
-        /// </summary>
-        /// <value>The application icon URL.</value>
-        public string AppIconUrl { get; set; }
-        
-        /// <summary>
-        /// Gets or sets a value indicating whether [supports remote control].
-        /// </summary>
-        /// <value><c>true</c> if [supports remote control]; otherwise, <c>false</c>.</value>
-        public bool SupportsRemoteControl { get; set; }
-
-        public PlayerStateInfo PlayState { get; set; }
-
-        public TranscodingInfo TranscodingInfo { get; set; }
-        
-        public SessionInfoDto()
-        {
-            AdditionalUsers = new SessionUserInfo[] { };
-
-            PlayableMediaTypes = new string[] {};
-            SupportedCommands = new string[] {};
-        }
-    }
-}

+ 1 - 3
MediaBrowser.Model/Sync/SyncJob.cs

@@ -1,6 +1,4 @@
 using System;
-using System.Collections.Generic;
-using MediaBrowser.Model.Sync;
 
 namespace MediaBrowser.Model.Sync
 {
@@ -108,7 +106,7 @@ namespace MediaBrowser.Model.Sync
 
         public SyncJob()
         {
-            RequestedItemIds = new Guid[] { };
+            RequestedItemIds = Array.Empty<Guid>();
         }
     }
 }

+ 8 - 8
MediaBrowser.Model/Users/UserPolicy.cs

@@ -78,7 +78,7 @@ namespace MediaBrowser.Model.Users
         public UserPolicy()
         {
             EnableContentDeletion = true;
-            EnableContentDeletionFromFolders = new string[] { };
+            EnableContentDeletionFromFolders = Array.Empty<string>();
 
             EnableSyncTranscoding = true;
             EnableMediaConversion = true;
@@ -97,20 +97,20 @@ namespace MediaBrowser.Model.Users
 
             EnableSharedDeviceControl = true;
 
-            BlockedTags = new string[] { };
-            BlockUnratedItems = new UnratedItem[] { };
+            BlockedTags = Array.Empty<string>();
+            BlockUnratedItems = Array.Empty<UnratedItem>();
 
             EnableUserPreferenceAccess = true;
 
-            AccessSchedules = new AccessSchedule[] { };
+            AccessSchedules = Array.Empty<AccessSchedule>();
 
             EnableAllChannels = true;
-            EnabledChannels = new string[] { };
+            EnabledChannels = Array.Empty<string>();
 
             EnableAllFolders = true;
-            EnabledFolders = new string[] { };
+            EnabledFolders = Array.Empty<string>();
 
-            EnabledDevices = new string[] { };
+            EnabledDevices = Array.Empty<string>();
             EnableAllDevices = true;
 
             EnableContentDownloading = true;
@@ -118,4 +118,4 @@ namespace MediaBrowser.Model.Users
             EnableRemoteAccess = true;
         }
     }
-}
+}

+ 1 - 10
MediaBrowser.Providers/Chapters/ChapterManager.cs

@@ -1,20 +1,11 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Controller.Chapters;
+using MediaBrowser.Controller.Chapters;
 using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Persistence;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Entities;
 using Microsoft.Extensions.Logging;
 using System;
 using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
 
 namespace MediaBrowser.Providers.Chapters
 {