mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-03-27 04:22:08 +00:00
Merge pull request #458 from EraYaN/code-cleanup
Clean up several minor issues and add TODOs
This commit is contained in:
@@ -202,7 +202,7 @@ namespace Emby.Server.Implementations.Activity
|
||||
return name;
|
||||
}
|
||||
|
||||
private string GetPlaybackNotificationType(string mediaType)
|
||||
private static string GetPlaybackNotificationType(string mediaType)
|
||||
{
|
||||
if (string.Equals(mediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -220,7 +220,7 @@ namespace Emby.Server.Implementations.Activity
|
||||
return null;
|
||||
}
|
||||
|
||||
private string GetPlaybackStoppedNotificationType(string mediaType)
|
||||
private static string GetPlaybackStoppedNotificationType(string mediaType)
|
||||
{
|
||||
if (string.Equals(mediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -577,8 +577,8 @@ namespace Emby.Server.Implementations.Activity
|
||||
/// <param name="description">The name of this item (singular form)</param>
|
||||
private static string CreateValueString(int value, string description)
|
||||
{
|
||||
return String.Format("{0:#,##0} {1}",
|
||||
value, value == 1 ? description : String.Format("{0}s", description));
|
||||
return string.Format("{0:#,##0} {1}",
|
||||
value, value == 1 ? description : string.Format("{0}s", description));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
@@ -83,7 +83,7 @@ namespace Emby.Server.Implementations.Activity
|
||||
{
|
||||
if (entry == null)
|
||||
{
|
||||
throw new ArgumentNullException("entry");
|
||||
throw new ArgumentNullException(nameof(entry));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
@@ -122,7 +122,7 @@ namespace Emby.Server.Implementations.Activity
|
||||
{
|
||||
if (entry == null)
|
||||
{
|
||||
throw new ArgumentNullException("entry");
|
||||
throw new ArgumentNullException(nameof(entry));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
@@ -251,7 +251,7 @@ namespace Emby.Server.Implementations.Activity
|
||||
}
|
||||
}
|
||||
|
||||
private ActivityLogEntry GetEntry(IReadOnlyList<IResultSetValue> reader)
|
||||
private static ActivityLogEntry GetEntry(IReadOnlyList<IResultSetValue> reader)
|
||||
{
|
||||
var index = 0;
|
||||
|
||||
|
||||
@@ -55,61 +55,31 @@ namespace Emby.Server.Implementations.AppBase
|
||||
}
|
||||
|
||||
private const string _virtualDataPath = "%AppDataPath%";
|
||||
public string VirtualDataPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return _virtualDataPath;
|
||||
}
|
||||
}
|
||||
public string VirtualDataPath => _virtualDataPath;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the image cache path.
|
||||
/// </summary>
|
||||
/// <value>The image cache path.</value>
|
||||
public string ImageCachePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(CachePath, "images");
|
||||
}
|
||||
}
|
||||
public string ImageCachePath => Path.Combine(CachePath, "images");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the plugin directory
|
||||
/// </summary>
|
||||
/// <value>The plugins path.</value>
|
||||
public string PluginsPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(ProgramDataPath, "plugins");
|
||||
}
|
||||
}
|
||||
public string PluginsPath => Path.Combine(ProgramDataPath, "plugins");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the plugin configurations directory
|
||||
/// </summary>
|
||||
/// <value>The plugin configurations path.</value>
|
||||
public string PluginConfigurationsPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(PluginsPath, "configurations");
|
||||
}
|
||||
}
|
||||
public string PluginConfigurationsPath => Path.Combine(PluginsPath, "configurations");
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to where temporary update files will be stored
|
||||
/// </summary>
|
||||
/// <value>The plugin configurations path.</value>
|
||||
public string TempUpdatePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(ProgramDataPath, "updates");
|
||||
}
|
||||
}
|
||||
public string TempUpdatePath => Path.Combine(ProgramDataPath, "updates");
|
||||
|
||||
/// <summary>
|
||||
/// The _log directory
|
||||
@@ -133,10 +103,7 @@ namespace Emby.Server.Implementations.AppBase
|
||||
|
||||
return _logDirectoryPath;
|
||||
}
|
||||
set
|
||||
{
|
||||
_logDirectoryPath = value;
|
||||
}
|
||||
set => _logDirectoryPath = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -161,23 +128,14 @@ namespace Emby.Server.Implementations.AppBase
|
||||
|
||||
return _configurationDirectoryPath;
|
||||
}
|
||||
set
|
||||
{
|
||||
_configurationDirectoryPath = value;
|
||||
}
|
||||
set => _configurationDirectoryPath = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path to the system configuration file
|
||||
/// </summary>
|
||||
/// <value>The system configuration file path.</value>
|
||||
public string SystemConfigurationFilePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(ConfigurationDirectoryPath, "system.xml");
|
||||
}
|
||||
}
|
||||
public string SystemConfigurationFilePath => Path.Combine(ConfigurationDirectoryPath, "system.xml");
|
||||
|
||||
/// <summary>
|
||||
/// The _cache directory
|
||||
@@ -200,22 +158,13 @@ namespace Emby.Server.Implementations.AppBase
|
||||
|
||||
return _cachePath;
|
||||
}
|
||||
set
|
||||
{
|
||||
_cachePath = value;
|
||||
}
|
||||
set => _cachePath = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the folder path to the temp directory within the cache folder
|
||||
/// </summary>
|
||||
/// <value>The temp directory.</value>
|
||||
public string TempDirectory
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(CachePath, "temp");
|
||||
}
|
||||
}
|
||||
public string TempDirectory => Path.Combine(CachePath, "temp");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
@@ -99,6 +99,7 @@ namespace Emby.Server.Implementations.AppBase
|
||||
/// <param name="applicationPaths">The application paths.</param>
|
||||
/// <param name="loggerFactory">The logger factory.</param>
|
||||
/// <param name="xmlSerializer">The XML serializer.</param>
|
||||
/// <param name="fileSystem">The file system</param>
|
||||
protected BaseConfigurationManager(IApplicationPaths applicationPaths, ILoggerFactory loggerFactory, IXmlSerializer xmlSerializer, IFileSystem fileSystem)
|
||||
{
|
||||
CommonApplicationPaths = applicationPaths;
|
||||
@@ -155,7 +156,7 @@ namespace Emby.Server.Implementations.AppBase
|
||||
{
|
||||
if (newConfiguration == null)
|
||||
{
|
||||
throw new ArgumentNullException("newConfiguration");
|
||||
throw new ArgumentNullException(nameof(newConfiguration));
|
||||
}
|
||||
|
||||
ValidateCachePath(newConfiguration);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using MediaBrowser.Model.IO;
|
||||
@@ -18,6 +18,7 @@ namespace Emby.Server.Implementations.AppBase
|
||||
/// <param name="type">The type.</param>
|
||||
/// <param name="path">The path.</param>
|
||||
/// <param name="xmlSerializer">The XML serializer.</param>
|
||||
/// <param name="fileSystem">The file system</param>
|
||||
/// <returns>System.Object.</returns>
|
||||
public static object GetXmlConfiguration(Type type, string path, IXmlSerializer xmlSerializer, IFileSystem fileSystem)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Emby.Common.Implementations.Serialization;
|
||||
using Emby.Common.Implementations.Serialization;
|
||||
using Emby.Drawing;
|
||||
using Emby.Photos;
|
||||
using Emby.Dlna;
|
||||
@@ -132,13 +132,7 @@ namespace Emby.Server.Implementations
|
||||
/// Gets or sets a value indicating whether this instance can self update.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance can self update; otherwise, <c>false</c>.</value>
|
||||
public virtual bool CanSelfUpdate
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public virtual bool CanSelfUpdate => false;
|
||||
|
||||
public virtual bool CanLaunchWebBrowser
|
||||
{
|
||||
@@ -245,10 +239,7 @@ namespace Emby.Server.Implementations
|
||||
}
|
||||
}
|
||||
|
||||
public virtual string OperatingSystemDisplayName
|
||||
{
|
||||
get { return EnvironmentInfo.OperatingSystemName; }
|
||||
}
|
||||
public virtual string OperatingSystemDisplayName => EnvironmentInfo.OperatingSystemName;
|
||||
|
||||
/// <summary>
|
||||
/// The container
|
||||
@@ -261,10 +252,7 @@ namespace Emby.Server.Implementations
|
||||
/// Gets the server configuration manager.
|
||||
/// </summary>
|
||||
/// <value>The server configuration manager.</value>
|
||||
public IServerConfigurationManager ServerConfigurationManager
|
||||
{
|
||||
get { return (IServerConfigurationManager)ConfigurationManager; }
|
||||
}
|
||||
public IServerConfigurationManager ServerConfigurationManager => (IServerConfigurationManager)ConfigurationManager;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the configuration manager.
|
||||
@@ -453,13 +441,7 @@ namespace Emby.Server.Implementations
|
||||
/// Gets the current application version
|
||||
/// </summary>
|
||||
/// <value>The application version.</value>
|
||||
public Version ApplicationVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return _version ?? (_version = typeof(ApplicationHost).Assembly.GetName().Version);
|
||||
}
|
||||
}
|
||||
public Version ApplicationVersion => _version ?? (_version = typeof(ApplicationHost).Assembly.GetName().Version);
|
||||
|
||||
private DeviceId _deviceId;
|
||||
public string SystemId
|
||||
@@ -479,15 +461,9 @@ namespace Emby.Server.Implementations
|
||||
/// Gets the name.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Emby Server";
|
||||
}
|
||||
}
|
||||
public string Name => "Emby Server";
|
||||
|
||||
private Tuple<Assembly, string> GetAssembly(Type type)
|
||||
private static Tuple<Assembly, string> GetAssembly(Type type)
|
||||
{
|
||||
var assembly = type.GetTypeInfo().Assembly;
|
||||
string path = null;
|
||||
@@ -513,7 +489,7 @@ namespace Emby.Server.Implementations
|
||||
/// <summary>
|
||||
/// Creates the instance safe.
|
||||
/// </summary>
|
||||
/// <param name="type">The type.</param>
|
||||
/// <param name="typeInfo">The type information.</param>
|
||||
/// <returns>System.Object.</returns>
|
||||
protected object CreateInstanceSafe(Tuple<Type, string> typeInfo)
|
||||
{
|
||||
@@ -1004,13 +980,7 @@ namespace Emby.Server.Implementations
|
||||
return s => JsvReader.GetParseFn(propertyType)(s);
|
||||
}
|
||||
|
||||
public virtual string PackageRuntime
|
||||
{
|
||||
get
|
||||
{
|
||||
return "netcore";
|
||||
}
|
||||
}
|
||||
public virtual string PackageRuntime => "netcore";
|
||||
|
||||
public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths, EnvironmentInfo.EnvironmentInfo environmentInfo)
|
||||
{
|
||||
@@ -1049,7 +1019,7 @@ namespace Emby.Server.Implementations
|
||||
return name + "/" + ApplicationVersion;
|
||||
}
|
||||
|
||||
private string FormatAttribute(string str)
|
||||
private static string FormatAttribute(string str)
|
||||
{
|
||||
var arr = str.ToCharArray();
|
||||
|
||||
@@ -1066,13 +1036,7 @@ namespace Emby.Server.Implementations
|
||||
return result;
|
||||
}
|
||||
|
||||
protected virtual bool SupportsDualModeSockets
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
protected virtual bool SupportsDualModeSockets => true;
|
||||
|
||||
private X509Certificate GetCertificate(CertificateInfo info)
|
||||
{
|
||||
@@ -1927,18 +1891,9 @@ namespace Emby.Server.Implementations
|
||||
};
|
||||
}
|
||||
|
||||
public bool EnableHttps
|
||||
{
|
||||
get
|
||||
{
|
||||
return SupportsHttps && ServerConfigurationManager.Configuration.EnableHttps;
|
||||
}
|
||||
}
|
||||
public bool EnableHttps => SupportsHttps && ServerConfigurationManager.Configuration.EnableHttps;
|
||||
|
||||
public bool SupportsHttps
|
||||
{
|
||||
get { return Certificate != null || ServerConfigurationManager.Configuration.IsBehindProxy; }
|
||||
}
|
||||
public bool SupportsHttps => Certificate != null || ServerConfigurationManager.Configuration.IsBehindProxy;
|
||||
|
||||
public async Task<string> GetLocalApiUrl(CancellationToken cancellationToken)
|
||||
{
|
||||
@@ -2132,15 +2087,10 @@ namespace Emby.Server.Implementations
|
||||
}
|
||||
}
|
||||
|
||||
public string FriendlyName
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.IsNullOrEmpty(ServerConfigurationManager.Configuration.ServerName)
|
||||
? Environment.MachineName
|
||||
: ServerConfigurationManager.Configuration.ServerName;
|
||||
}
|
||||
}
|
||||
public string FriendlyName =>
|
||||
string.IsNullOrEmpty(ServerConfigurationManager.Configuration.ServerName)
|
||||
? Environment.MachineName
|
||||
: ServerConfigurationManager.Configuration.ServerName;
|
||||
|
||||
public int HttpPort { get; private set; }
|
||||
|
||||
@@ -2177,7 +2127,7 @@ namespace Emby.Server.Implementations
|
||||
private bool _hasUpdateAvailable;
|
||||
public bool HasUpdateAvailable
|
||||
{
|
||||
get { return _hasUpdateAvailable; }
|
||||
get => _hasUpdateAvailable;
|
||||
set
|
||||
{
|
||||
var fireEvent = value && !_hasUpdateAvailable;
|
||||
|
||||
@@ -30,10 +30,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
return channel.GetChannelImage(type, cancellationToken);
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "Channel Image Provider"; }
|
||||
}
|
||||
public string Name => "Channel Image Provider";
|
||||
|
||||
public bool Supports(BaseItem item)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller.Channels;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
@@ -67,13 +67,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
_providerManager = providerManager;
|
||||
}
|
||||
|
||||
private TimeSpan CacheLength
|
||||
{
|
||||
get
|
||||
{
|
||||
return TimeSpan.FromHours(3);
|
||||
}
|
||||
}
|
||||
private static TimeSpan CacheLength => TimeSpan.FromHours(3);
|
||||
|
||||
public void AddParts(IEnumerable<IChannel> channels)
|
||||
{
|
||||
@@ -269,6 +263,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
{
|
||||
};
|
||||
|
||||
//TODO Fix The co-variant conversion (internalResult.Items) between Folder[] and BaseItem[], this can generate runtime issues.
|
||||
var returnItems = _dtoService.GetBaseItemDtos(internalResult.Items, dtoOptions, user);
|
||||
|
||||
var result = new QueryResult<BaseItemDto>
|
||||
@@ -419,7 +414,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
return list;
|
||||
}
|
||||
|
||||
private MediaSourceInfo NormalizeMediaSource(BaseItem item, MediaSourceInfo info)
|
||||
private static MediaSourceInfo NormalizeMediaSource(BaseItem item, MediaSourceInfo info)
|
||||
{
|
||||
info.RunTimeTicks = info.RunTimeTicks ?? item.RunTimeTicks;
|
||||
|
||||
@@ -492,7 +487,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
return item;
|
||||
}
|
||||
|
||||
private string GetOfficialRating(ChannelParentalRating rating)
|
||||
private static string GetOfficialRating(ChannelParentalRating rating)
|
||||
{
|
||||
switch (rating)
|
||||
{
|
||||
@@ -533,7 +528,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
{
|
||||
if (string.IsNullOrEmpty(id))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
var channel = GetChannel(id);
|
||||
@@ -577,7 +572,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
{
|
||||
if (string.IsNullOrEmpty(name))
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
throw new ArgumentNullException(nameof(name));
|
||||
}
|
||||
return _libraryManager.GetNewItemId("Channel " + name, typeof(Channel));
|
||||
}
|
||||
@@ -891,7 +886,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
filename + ".json");
|
||||
}
|
||||
|
||||
private string GetIdToHash(string externalId, string channelName)
|
||||
private static string GetIdToHash(string externalId, string channelName)
|
||||
{
|
||||
// Increment this as needed to force new downloads
|
||||
// Incorporate Name because it's being used to convert channel entity to provider
|
||||
@@ -1187,7 +1182,7 @@ namespace Emby.Server.Implementations.Channels
|
||||
{
|
||||
if (channel == null)
|
||||
{
|
||||
throw new ArgumentNullException("channel");
|
||||
throw new ArgumentNullException(nameof(channel));
|
||||
}
|
||||
|
||||
var result = GetAllChannels()
|
||||
|
||||
@@ -25,35 +25,17 @@ namespace Emby.Server.Implementations.Channels
|
||||
_libraryManager = libraryManager;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "Refresh Channels"; }
|
||||
}
|
||||
public string Name => "Refresh Channels";
|
||||
|
||||
public string Description
|
||||
{
|
||||
get { return "Refreshes internet channel information."; }
|
||||
}
|
||||
public string Description => "Refreshes internet channel information.";
|
||||
|
||||
public string Category
|
||||
{
|
||||
get { return "Internet Channels"; }
|
||||
}
|
||||
public string Category => "Internet Channels";
|
||||
|
||||
public bool IsHidden
|
||||
{
|
||||
get { return ((ChannelManager)_channelManager).Channels.Length == 0; }
|
||||
}
|
||||
public bool IsHidden => ((ChannelManager)_channelManager).Channels.Length == 0;
|
||||
|
||||
public bool IsEnabled
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsEnabled => true;
|
||||
|
||||
public bool IsLogged
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsLogged => true;
|
||||
|
||||
public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
|
||||
{
|
||||
@@ -77,9 +59,6 @@ namespace Emby.Server.Implementations.Channels
|
||||
};
|
||||
}
|
||||
|
||||
public string Key
|
||||
{
|
||||
get { return "RefreshInternetChannels"; }
|
||||
}
|
||||
public string Key => "RefreshInternetChannels";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,28 +38,19 @@ namespace Emby.Server.Implementations.Configuration
|
||||
/// Gets the type of the configuration.
|
||||
/// </summary>
|
||||
/// <value>The type of the configuration.</value>
|
||||
protected override Type ConfigurationType
|
||||
{
|
||||
get { return typeof(ServerConfiguration); }
|
||||
}
|
||||
protected override Type ConfigurationType => typeof(ServerConfiguration);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the application paths.
|
||||
/// </summary>
|
||||
/// <value>The application paths.</value>
|
||||
public IServerApplicationPaths ApplicationPaths
|
||||
{
|
||||
get { return (IServerApplicationPaths)CommonApplicationPaths; }
|
||||
}
|
||||
public IServerApplicationPaths ApplicationPaths => (IServerApplicationPaths)CommonApplicationPaths;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the configuration.
|
||||
/// </summary>
|
||||
/// <value>The configuration.</value>
|
||||
public ServerConfiguration Configuration
|
||||
{
|
||||
get { return (ServerConfiguration)CommonConfiguration; }
|
||||
}
|
||||
public ServerConfiguration Configuration => (ServerConfiguration)CommonConfiguration;
|
||||
|
||||
/// <summary>
|
||||
/// Called when [configuration updated].
|
||||
|
||||
@@ -24,15 +24,9 @@ namespace Emby.Server.Implementations.Data
|
||||
WriteLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);
|
||||
}
|
||||
|
||||
protected TransactionMode TransactionMode
|
||||
{
|
||||
get { return TransactionMode.Deferred; }
|
||||
}
|
||||
protected TransactionMode TransactionMode => TransactionMode.Deferred;
|
||||
|
||||
protected TransactionMode ReadTransactionMode
|
||||
{
|
||||
get { return TransactionMode.Deferred; }
|
||||
}
|
||||
protected TransactionMode ReadTransactionMode => TransactionMode.Deferred;
|
||||
|
||||
internal static int ThreadSafeMode { get; set; }
|
||||
|
||||
@@ -58,10 +52,7 @@ namespace Emby.Server.Implementations.Data
|
||||
private string _defaultWal;
|
||||
protected ManagedConnection _connection;
|
||||
|
||||
protected virtual bool EnableSingleConnection
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
protected virtual bool EnableSingleConnection => true;
|
||||
|
||||
protected ManagedConnection CreateConnection(bool isReadOnly = false)
|
||||
{
|
||||
@@ -238,21 +229,9 @@ namespace Emby.Server.Implementations.Data
|
||||
Logger.LogInformation("PRAGMA synchronous=" + db.Query("PRAGMA synchronous").SelectScalarString().First());
|
||||
}
|
||||
|
||||
protected virtual bool EnableTempStoreMemory
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
protected virtual bool EnableTempStoreMemory => false;
|
||||
|
||||
protected virtual int? CacheSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
protected virtual int? CacheSize => null;
|
||||
|
||||
internal static void CheckOk(int rc)
|
||||
{
|
||||
@@ -276,7 +255,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (_disposed)
|
||||
{
|
||||
throw new ObjectDisposedException(GetType().Name + " has been disposed and cannot be accessed.");
|
||||
throw new ObjectDisposedException(GetType().Name ,"Object has been disposed and cannot be accessed.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,13 +32,7 @@ namespace Emby.Server.Implementations.Data
|
||||
/// Gets the name of the repository
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return "SQLite";
|
||||
}
|
||||
}
|
||||
public string Name => "SQLite";
|
||||
|
||||
/// <summary>
|
||||
/// The _json serializer
|
||||
@@ -94,11 +88,11 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (displayPreferences == null)
|
||||
{
|
||||
throw new ArgumentNullException("displayPreferences");
|
||||
throw new ArgumentNullException(nameof(displayPreferences));
|
||||
}
|
||||
if (string.IsNullOrEmpty(displayPreferences.Id))
|
||||
{
|
||||
throw new ArgumentNullException("displayPreferences.Id");
|
||||
throw new ArgumentNullException(nameof(displayPreferences.Id));
|
||||
}
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
@@ -142,7 +136,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (displayPreferences == null)
|
||||
{
|
||||
throw new ArgumentNullException("displayPreferences");
|
||||
throw new ArgumentNullException(nameof(displayPreferences));
|
||||
}
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
@@ -174,7 +168,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (string.IsNullOrEmpty(displayPreferencesId))
|
||||
{
|
||||
throw new ArgumentNullException("displayPreferencesId");
|
||||
throw new ArgumentNullException(nameof(displayPreferencesId));
|
||||
}
|
||||
|
||||
var guidId = displayPreferencesId.GetMD5();
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (queries == null)
|
||||
{
|
||||
throw new ArgumentNullException("queries");
|
||||
throw new ArgumentNullException(nameof(queries));
|
||||
}
|
||||
|
||||
connection.RunInTransaction(conn =>
|
||||
@@ -134,7 +134,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
throw new ArgumentNullException("obj");
|
||||
throw new ArgumentNullException(nameof(obj));
|
||||
}
|
||||
|
||||
using (var stream = new MemoryStream())
|
||||
|
||||
@@ -82,11 +82,11 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (config == null)
|
||||
{
|
||||
throw new ArgumentNullException("config");
|
||||
throw new ArgumentNullException(nameof(config));
|
||||
}
|
||||
if (jsonSerializer == null)
|
||||
{
|
||||
throw new ArgumentNullException("jsonSerializer");
|
||||
throw new ArgumentNullException(nameof(jsonSerializer));
|
||||
}
|
||||
|
||||
_appHost = appHost;
|
||||
@@ -455,7 +455,7 @@ namespace Emby.Server.Implementations.Data
|
||||
"ColorTransfer"
|
||||
};
|
||||
|
||||
private string GetSaveItemCommandText()
|
||||
private static string GetSaveItemCommandText()
|
||||
{
|
||||
var saveColumns = new List<string>
|
||||
{
|
||||
@@ -558,7 +558,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
SaveItems(new List<BaseItem> { item }, cancellationToken);
|
||||
@@ -568,7 +568,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -605,7 +605,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (items == null)
|
||||
{
|
||||
throw new ArgumentNullException("items");
|
||||
throw new ArgumentNullException(nameof(items));
|
||||
}
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
@@ -1070,7 +1070,7 @@ namespace Emby.Server.Implementations.Data
|
||||
saveItemStatement.MoveNext();
|
||||
}
|
||||
|
||||
private string SerializeProviderIds(BaseItem item)
|
||||
private static string SerializeProviderIds(BaseItem item)
|
||||
{
|
||||
// Ideally we shouldn't need this IsNullOrWhiteSpace check but we're seeing some cases of bad data slip through
|
||||
var ids = item.ProviderIds
|
||||
@@ -1085,7 +1085,7 @@ namespace Emby.Server.Implementations.Data
|
||||
return string.Join("|", ids.Select(i => i.Key + "=" + i.Value).ToArray());
|
||||
}
|
||||
|
||||
private void DeserializeProviderIds(string value, BaseItem item)
|
||||
private static void DeserializeProviderIds(string value, BaseItem item)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
@@ -1226,7 +1226,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (id.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -1948,7 +1948,7 @@ namespace Emby.Server.Implementations.Data
|
||||
return item;
|
||||
}
|
||||
|
||||
private Guid[] SplitToGuids(string value)
|
||||
private static Guid[] SplitToGuids(string value)
|
||||
{
|
||||
var ids = value.Split('|');
|
||||
|
||||
@@ -1965,7 +1965,7 @@ namespace Emby.Server.Implementations.Data
|
||||
/// <summary>
|
||||
/// Gets chapters for an item
|
||||
/// </summary>
|
||||
/// <param name="id">The id.</param>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <returns>IEnumerable{ChapterInfo}.</returns>
|
||||
/// <exception cref="System.ArgumentNullException">id</exception>
|
||||
public List<ChapterInfo> GetChapters(BaseItem item)
|
||||
@@ -1996,7 +1996,7 @@ namespace Emby.Server.Implementations.Data
|
||||
/// <summary>
|
||||
/// Gets a single chapter for an item
|
||||
/// </summary>
|
||||
/// <param name="id">The id.</param>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="index">The index.</param>
|
||||
/// <returns>ChapterInfo.</returns>
|
||||
/// <exception cref="System.ArgumentNullException">id</exception>
|
||||
@@ -2067,12 +2067,12 @@ namespace Emby.Server.Implementations.Data
|
||||
|
||||
if (id.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
if (chapters == null)
|
||||
{
|
||||
throw new ArgumentNullException("chapters");
|
||||
throw new ArgumentNullException(nameof(chapters));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
@@ -2144,7 +2144,7 @@ namespace Emby.Server.Implementations.Data
|
||||
}
|
||||
}
|
||||
|
||||
private bool EnableJoinUserData(InternalItemsQuery query)
|
||||
private static bool EnableJoinUserData(InternalItemsQuery query)
|
||||
{
|
||||
if (query.User == null)
|
||||
{
|
||||
@@ -2681,7 +2681,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -2739,7 +2739,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -2928,7 +2928,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -3212,7 +3212,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -3286,7 +3286,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -3362,7 +3362,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -5184,7 +5184,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
{
|
||||
if (id.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -5233,7 +5233,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -5273,7 +5273,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -5387,12 +5387,12 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
{
|
||||
if (itemId.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("itemId");
|
||||
throw new ArgumentNullException(nameof(itemId));
|
||||
}
|
||||
|
||||
if (ancestorIds == null)
|
||||
{
|
||||
throw new ArgumentNullException("ancestorIds");
|
||||
throw new ArgumentNullException(nameof(ancestorIds));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -5556,7 +5556,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
if (!query.Limit.HasValue)
|
||||
@@ -5915,12 +5915,12 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
{
|
||||
if (itemId.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("itemId");
|
||||
throw new ArgumentNullException(nameof(itemId));
|
||||
}
|
||||
|
||||
if (values == null)
|
||||
{
|
||||
throw new ArgumentNullException("keys");
|
||||
throw new ArgumentNullException(nameof(values));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -5991,12 +5991,12 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
{
|
||||
if (itemId.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("itemId");
|
||||
throw new ArgumentNullException(nameof(itemId));
|
||||
}
|
||||
|
||||
if (people == null)
|
||||
{
|
||||
throw new ArgumentNullException("people");
|
||||
throw new ArgumentNullException(nameof(people));
|
||||
}
|
||||
|
||||
CheckDisposed();
|
||||
@@ -6102,7 +6102,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
var cmdText = "select " + string.Join(",", _mediaStreamSaveColumns) + " from mediastreams where";
|
||||
@@ -6158,12 +6158,12 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
|
||||
|
||||
if (id.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
if (streams == null)
|
||||
{
|
||||
throw new ArgumentNullException("streams");
|
||||
throw new ArgumentNullException(nameof(streams));
|
||||
}
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@@ -28,13 +28,7 @@ namespace Emby.Server.Implementations.Data
|
||||
/// Gets the name of the repository
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return "SQLite";
|
||||
}
|
||||
}
|
||||
public string Name => "SQLite";
|
||||
|
||||
/// <summary>
|
||||
/// Opens the connection to the database
|
||||
@@ -136,13 +130,7 @@ namespace Emby.Server.Implementations.Data
|
||||
return list;
|
||||
}
|
||||
|
||||
protected override bool EnableTempStoreMemory
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
protected override bool EnableTempStoreMemory => true;
|
||||
|
||||
/// <summary>
|
||||
/// Saves the user data.
|
||||
@@ -151,15 +139,15 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (userData == null)
|
||||
{
|
||||
throw new ArgumentNullException("userData");
|
||||
throw new ArgumentNullException(nameof(userData));
|
||||
}
|
||||
if (internalUserId <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("internalUserId");
|
||||
throw new ArgumentNullException(nameof(internalUserId));
|
||||
}
|
||||
if (string.IsNullOrEmpty(key))
|
||||
{
|
||||
throw new ArgumentNullException("key");
|
||||
throw new ArgumentNullException(nameof(key));
|
||||
}
|
||||
|
||||
PersistUserData(internalUserId, key, userData, cancellationToken);
|
||||
@@ -169,11 +157,11 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (userData == null)
|
||||
{
|
||||
throw new ArgumentNullException("userData");
|
||||
throw new ArgumentNullException(nameof(userData));
|
||||
}
|
||||
if (internalUserId <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("internalUserId");
|
||||
throw new ArgumentNullException(nameof(internalUserId));
|
||||
}
|
||||
|
||||
PersistAllUserData(internalUserId, userData, cancellationToken);
|
||||
@@ -182,7 +170,7 @@ namespace Emby.Server.Implementations.Data
|
||||
/// <summary>
|
||||
/// Persists the user data.
|
||||
/// </summary>
|
||||
/// <param name="userId">The user id.</param>
|
||||
/// <param name="internalUserId">The user id.</param>
|
||||
/// <param name="key">The key.</param>
|
||||
/// <param name="userData">The user data.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
@@ -203,7 +191,7 @@ namespace Emby.Server.Implementations.Data
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveUserData(IDatabaseConnection db, long internalUserId, string key, UserItemData userData)
|
||||
private static void SaveUserData(IDatabaseConnection db, long internalUserId, string key, UserItemData userData)
|
||||
{
|
||||
using (var statement = db.PrepareStatement("replace into UserDatas (key, userId, rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex) values (@key, @userId, @rating,@played,@playCount,@isFavorite,@playbackPositionTicks,@lastPlayedDate,@AudioStreamIndex,@SubtitleStreamIndex)"))
|
||||
{
|
||||
@@ -280,7 +268,7 @@ namespace Emby.Server.Implementations.Data
|
||||
/// <summary>
|
||||
/// Gets the user data.
|
||||
/// </summary>
|
||||
/// <param name="userId">The user id.</param>
|
||||
/// <param name="internalUserId">The user id.</param>
|
||||
/// <param name="key">The key.</param>
|
||||
/// <returns>Task{UserItemData}.</returns>
|
||||
/// <exception cref="System.ArgumentNullException">
|
||||
@@ -292,11 +280,11 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (internalUserId <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("internalUserId");
|
||||
throw new ArgumentNullException(nameof(internalUserId));
|
||||
}
|
||||
if (string.IsNullOrEmpty(key))
|
||||
{
|
||||
throw new ArgumentNullException("key");
|
||||
throw new ArgumentNullException(nameof(key));
|
||||
}
|
||||
|
||||
using (WriteLock.Read())
|
||||
@@ -323,7 +311,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (keys == null)
|
||||
{
|
||||
throw new ArgumentNullException("keys");
|
||||
throw new ArgumentNullException(nameof(keys));
|
||||
}
|
||||
|
||||
if (keys.Count == 0)
|
||||
@@ -337,13 +325,13 @@ namespace Emby.Server.Implementations.Data
|
||||
/// <summary>
|
||||
/// Return all user-data associated with the given user
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="internalUserId"></param>
|
||||
/// <returns></returns>
|
||||
public List<UserItemData> GetAllUserData(long internalUserId)
|
||||
{
|
||||
if (internalUserId <= 0)
|
||||
{
|
||||
throw new ArgumentNullException("internalUserId");
|
||||
throw new ArgumentNullException(nameof(internalUserId));
|
||||
}
|
||||
|
||||
var list = new List<UserItemData>();
|
||||
|
||||
@@ -31,13 +31,7 @@ namespace Emby.Server.Implementations.Data
|
||||
/// Gets the name of the repository
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return "SQLite";
|
||||
}
|
||||
}
|
||||
public string Name => "SQLite";
|
||||
|
||||
/// <summary>
|
||||
/// Opens the connection to the database
|
||||
@@ -85,7 +79,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
var serialized = _jsonSerializer.SerializeToBytes(user);
|
||||
@@ -122,7 +116,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
var serialized = _jsonSerializer.SerializeToBytes(user);
|
||||
@@ -207,14 +201,13 @@ namespace Emby.Server.Implementations.Data
|
||||
/// Deletes the user.
|
||||
/// </summary>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>Task.</returns>
|
||||
/// <exception cref="System.ArgumentNullException">user</exception>
|
||||
public void DeleteUser(User user)
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace Emby.Server.Implementations.Data
|
||||
{
|
||||
if (string.IsNullOrEmpty(typeName))
|
||||
{
|
||||
throw new ArgumentNullException("typeName");
|
||||
throw new ArgumentNullException(nameof(typeName));
|
||||
}
|
||||
|
||||
return _typeMap.GetOrAdd(typeName, LookupType);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
@@ -15,10 +15,7 @@ namespace Emby.Server.Implementations.Devices
|
||||
|
||||
private readonly object _syncLock = new object();
|
||||
|
||||
private string CachePath
|
||||
{
|
||||
get { return Path.Combine(_appPaths.DataPath, "device.txt"); }
|
||||
}
|
||||
private string CachePath => Path.Combine(_appPaths.DataPath, "device.txt");
|
||||
|
||||
private string GetCachedId()
|
||||
{
|
||||
@@ -70,7 +67,7 @@ namespace Emby.Server.Implementations.Devices
|
||||
}
|
||||
}
|
||||
|
||||
private string GetNewId()
|
||||
private static string GetNewId()
|
||||
{
|
||||
return Guid.NewGuid().ToString("N");
|
||||
}
|
||||
@@ -92,8 +89,9 @@ namespace Emby.Server.Implementations.Devices
|
||||
|
||||
public DeviceId(IApplicationPaths appPaths, ILogger logger, IFileSystem fileSystem)
|
||||
{
|
||||
if (fileSystem == null) {
|
||||
throw new ArgumentNullException ("fileSystem");
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
|
||||
_appPaths = appPaths;
|
||||
@@ -101,9 +99,6 @@ namespace Emby.Server.Implementations.Devices
|
||||
_fileSystem = fileSystem;
|
||||
}
|
||||
|
||||
public string Value
|
||||
{
|
||||
get { return _id ?? (_id = GetDeviceId()); }
|
||||
}
|
||||
public string Value => _id ?? (_id = GetDeviceId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller.Devices;
|
||||
using MediaBrowser.Controller.Library;
|
||||
@@ -360,10 +360,7 @@ namespace Emby.Server.Implementations.Devices
|
||||
return path;
|
||||
}
|
||||
|
||||
private string DefaultCameraUploadsPath
|
||||
{
|
||||
get { return Path.Combine(_config.CommonApplicationPaths.DataPath, "camerauploads"); }
|
||||
}
|
||||
private string DefaultCameraUploadsPath => Path.Combine(_config.CommonApplicationPaths.DataPath, "camerauploads");
|
||||
|
||||
public bool CanAccessDevice(User user, string deviceId)
|
||||
{
|
||||
@@ -373,7 +370,7 @@ namespace Emby.Server.Implementations.Devices
|
||||
}
|
||||
if (string.IsNullOrEmpty(deviceId))
|
||||
{
|
||||
throw new ArgumentNullException("deviceId");
|
||||
throw new ArgumentNullException(nameof(deviceId));
|
||||
}
|
||||
|
||||
if (!CanAccessDevice(user.Policy, deviceId))
|
||||
@@ -389,7 +386,7 @@ namespace Emby.Server.Implementations.Devices
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool CanAccessDevice(UserPolicy policy, string id)
|
||||
private static bool CanAccessDevice(UserPolicy policy, string id)
|
||||
{
|
||||
if (policy.EnableAllDevices)
|
||||
{
|
||||
|
||||
@@ -81,30 +81,15 @@ namespace Emby.Server.Implementations.Diagnostics
|
||||
}
|
||||
}
|
||||
|
||||
public ProcessOptions StartInfo
|
||||
{
|
||||
get { return _options; }
|
||||
}
|
||||
public ProcessOptions StartInfo => _options;
|
||||
|
||||
public StreamWriter StandardInput
|
||||
{
|
||||
get { return _process.StandardInput; }
|
||||
}
|
||||
public StreamWriter StandardInput => _process.StandardInput;
|
||||
|
||||
public StreamReader StandardError
|
||||
{
|
||||
get { return _process.StandardError; }
|
||||
}
|
||||
public StreamReader StandardError => _process.StandardError;
|
||||
|
||||
public StreamReader StandardOutput
|
||||
{
|
||||
get { return _process.StandardOutput; }
|
||||
}
|
||||
public StreamReader StandardOutput => _process.StandardOutput;
|
||||
|
||||
public int ExitCode
|
||||
{
|
||||
get { return _process.ExitCode; }
|
||||
}
|
||||
public int ExitCode => _process.ExitCode;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common;
|
||||
using MediaBrowser.Common;
|
||||
using MediaBrowser.Controller.Channels;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Devices;
|
||||
@@ -189,7 +189,7 @@ namespace Emby.Server.Implementations.Dto
|
||||
return dto;
|
||||
}
|
||||
|
||||
private IList<BaseItem> GetTaggedItems(IItemByName byName, User user, DtoOptions options)
|
||||
private static IList<BaseItem> GetTaggedItems(IItemByName byName, User user, DtoOptions options)
|
||||
{
|
||||
return byName.GetTaggedItems(new InternalItemsQuery(user)
|
||||
{
|
||||
@@ -295,7 +295,7 @@ namespace Emby.Server.Implementations.Dto
|
||||
return dto;
|
||||
}
|
||||
|
||||
private void NormalizeMediaSourceContainers(BaseItemDto dto)
|
||||
private static void NormalizeMediaSourceContainers(BaseItemDto dto)
|
||||
{
|
||||
foreach (var mediaSource in dto.MediaSources)
|
||||
{
|
||||
@@ -347,7 +347,7 @@ namespace Emby.Server.Implementations.Dto
|
||||
return dto;
|
||||
}
|
||||
|
||||
private void SetItemByNameInfo(BaseItem item, BaseItemDto dto, IList<BaseItem> taggedItems, User user = null)
|
||||
private static void SetItemByNameInfo(BaseItem item, BaseItemDto dto, IList<BaseItem> taggedItems, User user = null)
|
||||
{
|
||||
if (item is MusicArtist)
|
||||
{
|
||||
@@ -447,7 +447,7 @@ namespace Emby.Server.Implementations.Dto
|
||||
}
|
||||
}
|
||||
|
||||
private int GetChildCount(Folder folder, User user)
|
||||
private static int GetChildCount(Folder folder, User user)
|
||||
{
|
||||
// Right now this is too slow to calculate for top level folders on a per-user basis
|
||||
// Just return something so that apps that are expecting a value won't think the folders are empty
|
||||
@@ -470,11 +470,11 @@ namespace Emby.Server.Implementations.Dto
|
||||
return item.Id.ToString("N");
|
||||
}
|
||||
|
||||
private void SetBookProperties(BaseItemDto dto, Book item)
|
||||
private static void SetBookProperties(BaseItemDto dto, Book item)
|
||||
{
|
||||
dto.SeriesName = item.SeriesName;
|
||||
}
|
||||
private void SetPhotoProperties(BaseItemDto dto, Photo item)
|
||||
private static void SetPhotoProperties(BaseItemDto dto, Photo item)
|
||||
{
|
||||
dto.CameraMake = item.CameraMake;
|
||||
dto.CameraModel = item.CameraModel;
|
||||
@@ -520,13 +520,13 @@ namespace Emby.Server.Implementations.Dto
|
||||
dto.Album = item.Album;
|
||||
}
|
||||
|
||||
private void SetGameProperties(BaseItemDto dto, Game item)
|
||||
private static void SetGameProperties(BaseItemDto dto, Game item)
|
||||
{
|
||||
dto.GameSystem = item.GameSystem;
|
||||
dto.MultiPartGameFiles = item.MultiPartGameFiles;
|
||||
}
|
||||
|
||||
private void SetGameSystemProperties(BaseItemDto dto, GameSystem item)
|
||||
private static void SetGameSystemProperties(BaseItemDto dto, GameSystem item)
|
||||
{
|
||||
dto.GameSystem = item.GameSystemName;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Net;
|
||||
@@ -227,7 +227,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||
{
|
||||
if (_disposed)
|
||||
{
|
||||
throw new ObjectDisposedException("PortMapper");
|
||||
throw new ObjectDisposedException(GetType().Name);
|
||||
}
|
||||
|
||||
// On some systems the device discovered event seems to fire repeatedly
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Plugins;
|
||||
using MediaBrowser.Controller.Session;
|
||||
@@ -142,7 +142,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||
_providerManager_RefreshProgress(sender, new GenericEventArgs<Tuple<BaseItem, double>>(new Tuple<BaseItem, double>(e.Argument, 100)));
|
||||
}
|
||||
|
||||
private bool EnableRefreshMessage(BaseItem item)
|
||||
private static bool EnableRefreshMessage(BaseItem item)
|
||||
{
|
||||
var folder = item as Folder;
|
||||
|
||||
@@ -387,7 +387,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||
};
|
||||
}
|
||||
|
||||
private bool FilterItem(BaseItem item)
|
||||
private static bool FilterItem(BaseItem item)
|
||||
{
|
||||
if (!item.IsFolder && !item.HasPathProtocol)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using MediaBrowser.Controller.Library;
|
||||
@@ -62,7 +62,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
|
||||
// TODO Log exception or Investigate and properly fix.
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -30,10 +30,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||
|
||||
public string Description => "Refresh user infos";
|
||||
|
||||
public string Category
|
||||
{
|
||||
get { return "Library"; }
|
||||
}
|
||||
public string Category => "Library";
|
||||
|
||||
public bool IsHidden => true;
|
||||
|
||||
|
||||
@@ -29,14 +29,8 @@ namespace Emby.Server.Implementations.EnvironmentInfo
|
||||
}
|
||||
}
|
||||
|
||||
public string OperatingSystemVersion
|
||||
{
|
||||
get
|
||||
{
|
||||
return Environment.OSVersion.Version.ToString() + " " + Environment.OSVersion.ServicePack.ToString();
|
||||
}
|
||||
}
|
||||
public string OperatingSystemVersion => Environment.OSVersion.Version.ToString() + " " + Environment.OSVersion.ServicePack.ToString();
|
||||
|
||||
public Architecture SystemArchitecture { get { return RuntimeInformation.OSArchitecture; } }
|
||||
public Architecture SystemArchitecture => RuntimeInformation.OSArchitecture;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
@@ -48,11 +48,11 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
{
|
||||
if (appPaths == null)
|
||||
{
|
||||
throw new ArgumentNullException("appPaths");
|
||||
throw new ArgumentNullException(nameof(appPaths));
|
||||
}
|
||||
if (logger == null)
|
||||
{
|
||||
throw new ArgumentNullException("logger");
|
||||
throw new ArgumentNullException(nameof(logger));
|
||||
}
|
||||
|
||||
_logger = logger;
|
||||
@@ -87,7 +87,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
{
|
||||
if (string.IsNullOrEmpty(host))
|
||||
{
|
||||
throw new ArgumentNullException("host");
|
||||
throw new ArgumentNullException(nameof(host));
|
||||
}
|
||||
|
||||
HttpClientInfo client;
|
||||
@@ -104,7 +104,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
return client;
|
||||
}
|
||||
|
||||
private WebRequest CreateWebRequest(string url)
|
||||
private static WebRequest CreateWebRequest(string url)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
return request;
|
||||
}
|
||||
|
||||
private CredentialCache GetCredential(string url, string username, string password)
|
||||
private static CredentialCache GetCredential(string url, string username, string password)
|
||||
{
|
||||
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
|
||||
CredentialCache credentialCache = new CredentialCache();
|
||||
@@ -220,7 +220,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
}
|
||||
}
|
||||
|
||||
private void SetUserAgent(HttpWebRequest request, string userAgent)
|
||||
private static void SetUserAgent(HttpWebRequest request, string userAgent)
|
||||
{
|
||||
request.UserAgent = userAgent;
|
||||
}
|
||||
@@ -491,7 +491,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
return responseInfo;
|
||||
}
|
||||
|
||||
private void SetHeaders(WebHeaderCollection headers, HttpResponseInfo responseInfo)
|
||||
private static void SetHeaders(WebHeaderCollection headers, HttpResponseInfo responseInfo)
|
||||
{
|
||||
foreach (var key in headers.AllKeys)
|
||||
{
|
||||
@@ -541,7 +541,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
|
||||
if (options.Progress == null)
|
||||
{
|
||||
throw new ArgumentNullException("progress");
|
||||
throw new ArgumentException("Options did not have a Progress value.",nameof(options));
|
||||
}
|
||||
|
||||
options.CancellationToken.ThrowIfCancellationRequested();
|
||||
@@ -616,7 +616,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
}
|
||||
}
|
||||
|
||||
private long? GetContentLength(HttpWebResponse response)
|
||||
private static long? GetContentLength(HttpWebResponse response)
|
||||
{
|
||||
var length = response.ContentLength;
|
||||
|
||||
@@ -704,7 +704,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
{
|
||||
if (string.IsNullOrEmpty(options.Url))
|
||||
{
|
||||
throw new ArgumentNullException("options");
|
||||
throw new ArgumentNullException(nameof(options));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -713,7 +713,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
/// </summary>
|
||||
/// <param name="url">The URL.</param>
|
||||
/// <returns>System.String.</returns>
|
||||
private string GetHostFromUrl(string url)
|
||||
private static string GetHostFromUrl(string url)
|
||||
{
|
||||
var index = url.IndexOf("://", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
@@ -803,7 +803,7 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||
};
|
||||
}
|
||||
|
||||
private Task<WebResponse> GetResponseAsync(WebRequest request, TimeSpan timeout)
|
||||
private static Task<WebResponse> GetResponseAsync(WebRequest request, TimeSpan timeout)
|
||||
{
|
||||
var taskCompletion = new TaskCompletionSource<WebResponse>();
|
||||
|
||||
|
||||
@@ -38,10 +38,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// Gets the options.
|
||||
/// </summary>
|
||||
/// <value>The options.</value>
|
||||
public IDictionary<string, string> Headers
|
||||
{
|
||||
get { return _options; }
|
||||
}
|
||||
public IDictionary<string, string> Headers => _options;
|
||||
|
||||
public string Path { get; set; }
|
||||
|
||||
@@ -49,7 +46,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (string.IsNullOrEmpty(contentType))
|
||||
{
|
||||
throw new ArgumentNullException("contentType");
|
||||
throw new ArgumentNullException(nameof(contentType));
|
||||
}
|
||||
|
||||
Path = path;
|
||||
@@ -203,8 +200,8 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
|
||||
public HttpStatusCode StatusCode
|
||||
{
|
||||
get { return (HttpStatusCode)Status; }
|
||||
set { Status = (int)value; }
|
||||
get => (HttpStatusCode)Status;
|
||||
set => Status = (int)value;
|
||||
}
|
||||
|
||||
public string StatusDescription { get; set; }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Net;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@@ -89,13 +89,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{typeof (ArgumentException), 400}
|
||||
};
|
||||
|
||||
protected ILogger Logger
|
||||
{
|
||||
get
|
||||
{
|
||||
return _logger;
|
||||
}
|
||||
}
|
||||
protected ILogger Logger => _logger;
|
||||
|
||||
public object CreateInstance(Type type)
|
||||
{
|
||||
@@ -190,10 +184,9 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
}
|
||||
}
|
||||
|
||||
private Exception GetActualException(Exception ex)
|
||||
private static Exception GetActualException(Exception ex)
|
||||
{
|
||||
var agg = ex as AggregateException;
|
||||
if (agg != null)
|
||||
if (ex is AggregateException agg)
|
||||
{
|
||||
var inner = agg.InnerException;
|
||||
if (inner != null)
|
||||
@@ -346,7 +339,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
return false;
|
||||
}
|
||||
|
||||
private string GetExtension(string url)
|
||||
private static string GetExtension(string url)
|
||||
{
|
||||
var parts = url.Split(new[] { '?' }, 2);
|
||||
|
||||
@@ -379,18 +372,18 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
string pagePathWithoutQueryString = url.Split(new[] { '?' }, StringSplitOptions.RemoveEmptyEntries)[0];
|
||||
|
||||
return newQueryString.Count > 0
|
||||
? String.Format("{0}?{1}", pagePathWithoutQueryString, newQueryString)
|
||||
? string.Format("{0}?{1}", pagePathWithoutQueryString, newQueryString)
|
||||
: pagePathWithoutQueryString;
|
||||
}
|
||||
|
||||
private string GetUrlToLog(string url)
|
||||
private static string GetUrlToLog(string url)
|
||||
{
|
||||
url = RemoveQueryStringByKey(url, "api_key");
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
private string NormalizeConfiguredLocalAddress(string address)
|
||||
private static string NormalizeConfiguredLocalAddress(string address)
|
||||
{
|
||||
var index = address.Trim('/').IndexOf('/');
|
||||
|
||||
@@ -727,7 +720,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
return null;
|
||||
}
|
||||
|
||||
private Task Write(IResponse response, string text)
|
||||
private static Task Write(IResponse response, string text)
|
||||
{
|
||||
var bOutput = Encoding.UTF8.GetBytes(text);
|
||||
response.SetContentLength(bOutput.Length);
|
||||
@@ -853,7 +846,9 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
return _jsonSerializer.DeserializeFromStreamAsync(stream, type);
|
||||
}
|
||||
|
||||
private string NormalizeEmbyRoutePath(string path)
|
||||
//TODO Add Jellyfin Route Path Normalizer
|
||||
|
||||
private static string NormalizeEmbyRoutePath(string path)
|
||||
{
|
||||
if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -863,7 +858,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
return "emby/" + path;
|
||||
}
|
||||
|
||||
private string NormalizeMediaBrowserRoutePath(string path)
|
||||
private static string NormalizeMediaBrowserRoutePath(string path)
|
||||
{
|
||||
if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -873,7 +868,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
return "mediabrowser/" + path;
|
||||
}
|
||||
|
||||
private string DoubleNormalizeEmbyRoutePath(string path)
|
||||
private static string DoubleNormalizeEmbyRoutePath(string path)
|
||||
{
|
||||
if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Net;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
@@ -207,7 +207,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (result == null)
|
||||
{
|
||||
throw new ArgumentNullException("result");
|
||||
throw new ArgumentNullException(nameof(result));
|
||||
}
|
||||
|
||||
if (responseHeaders == null)
|
||||
@@ -245,7 +245,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
return GetCompressionType(request);
|
||||
}
|
||||
|
||||
private string GetCompressionType(IRequest request)
|
||||
private static string GetCompressionType(IRequest request)
|
||||
{
|
||||
var acceptEncoding = request.Headers["Accept-Encoding"];
|
||||
|
||||
@@ -365,7 +365,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
return _brotliCompressor.Compress(bytes);
|
||||
}
|
||||
|
||||
private byte[] Deflate(byte[] bytes)
|
||||
private static byte[] Deflate(byte[] bytes)
|
||||
{
|
||||
// In .NET FX incompat-ville, you can't access compressed bytes without closing DeflateStream
|
||||
// Which means we must use MemoryStream since you have to use ToArray() on a closed Stream
|
||||
@@ -379,7 +379,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] GZip(byte[] buffer)
|
||||
private static byte[] GZip(byte[] buffer)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
using (var zipStream = new GZipStream(ms, CompressionMode.Compress))
|
||||
@@ -398,7 +398,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
: contentType.Split(';')[0].ToLower().Trim();
|
||||
}
|
||||
|
||||
private string SerializeToXmlString(object from)
|
||||
private static string SerializeToXmlString(object from)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
{
|
||||
@@ -453,7 +453,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
return GetStaticFileResult(requestContext, new StaticFileResultOptions
|
||||
@@ -471,7 +471,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
if (fileShare != FileShareMode.Read && fileShare != FileShareMode.ReadWrite)
|
||||
@@ -661,7 +661,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// <summary>
|
||||
/// Adds the expires header.
|
||||
/// </summary>
|
||||
private void AddExpiresHeader(IDictionary<string, string> responseHeaders, string cacheKey, TimeSpan? cacheDuration)
|
||||
private static void AddExpiresHeader(IDictionary<string, string> responseHeaders, string cacheKey, TimeSpan? cacheDuration)
|
||||
{
|
||||
if (cacheDuration.HasValue)
|
||||
{
|
||||
@@ -678,7 +678,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// </summary>
|
||||
/// <param name="responseHeaders">The responseHeaders.</param>
|
||||
/// <param name="lastDateModified">The last date modified.</param>
|
||||
private void AddAgeHeader(IDictionary<string, string> responseHeaders, DateTime? lastDateModified)
|
||||
private static void AddAgeHeader(IDictionary<string, string> responseHeaders, DateTime? lastDateModified)
|
||||
{
|
||||
if (lastDateModified.HasValue)
|
||||
{
|
||||
@@ -771,7 +771,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// </summary>
|
||||
/// <param name="date">The date.</param>
|
||||
/// <returns>DateTime.</returns>
|
||||
private DateTime NormalizeDateForComparison(DateTime date)
|
||||
private static DateTime NormalizeDateForComparison(DateTime date)
|
||||
{
|
||||
return new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, date.Kind);
|
||||
}
|
||||
@@ -781,7 +781,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// </summary>
|
||||
/// <param name="hasHeaders">The has options.</param>
|
||||
/// <param name="responseHeaders">The response headers.</param>
|
||||
private void AddResponseHeaders(IHasHeaders hasHeaders, IEnumerable<KeyValuePair<string, string>> responseHeaders)
|
||||
private static void AddResponseHeaders(IHasHeaders hasHeaders, IEnumerable<KeyValuePair<string, string>> responseHeaders)
|
||||
{
|
||||
foreach (var item in responseHeaders)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
@@ -46,10 +46,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// Additional HTTP Headers
|
||||
/// </summary>
|
||||
/// <value>The headers.</value>
|
||||
public IDictionary<string, string> Headers
|
||||
{
|
||||
get { return _options; }
|
||||
}
|
||||
public IDictionary<string, string> Headers => _options;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="StreamWriter" /> class.
|
||||
@@ -62,7 +59,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (string.IsNullOrEmpty(contentType))
|
||||
{
|
||||
throw new ArgumentNullException("contentType");
|
||||
throw new ArgumentNullException(nameof(contentType));
|
||||
}
|
||||
|
||||
RangeHeader = rangeHeader;
|
||||
@@ -186,7 +183,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CopyToInternalAsync(Stream source, Stream destination, long copyLength)
|
||||
private static async Task CopyToInternalAsync(Stream source, Stream destination, long copyLength)
|
||||
{
|
||||
var array = new byte[BufferSize];
|
||||
int bytesRead;
|
||||
@@ -220,8 +217,8 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
|
||||
public HttpStatusCode StatusCode
|
||||
{
|
||||
get { return (HttpStatusCode)Status; }
|
||||
set { Status = (int)value; }
|
||||
get => (HttpStatusCode)Status;
|
||||
set => Status = (int)value;
|
||||
}
|
||||
|
||||
public string StatusDescription { get; set; }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Connect;
|
||||
using MediaBrowser.Controller.Devices;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
@@ -173,7 +173,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
||||
return false;
|
||||
}
|
||||
|
||||
private void ValidateRoles(string[] roles, User user)
|
||||
private static void ValidateRoles(string[] roles, User user)
|
||||
{
|
||||
if (roles.Contains("admin", StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -207,7 +207,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
||||
}
|
||||
}
|
||||
|
||||
private AuthenticationInfo GetTokenInfo(IRequest request)
|
||||
private static AuthenticationInfo GetTokenInfo(IRequest request)
|
||||
{
|
||||
object info;
|
||||
request.Items.TryGetValue("OriginalAuthenticationInfo", out info);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Connect;
|
||||
using MediaBrowser.Controller.Connect;
|
||||
using MediaBrowser.Controller.Net;
|
||||
using MediaBrowser.Controller.Security;
|
||||
using System;
|
||||
@@ -227,7 +227,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
||||
return result;
|
||||
}
|
||||
|
||||
private string NormalizeValue(string value)
|
||||
private static string NormalizeValue(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
|
||||
@@ -35,10 +35,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// Gets the options.
|
||||
/// </summary>
|
||||
/// <value>The options.</value>
|
||||
public IDictionary<string, string> Headers
|
||||
{
|
||||
get { return _options; }
|
||||
}
|
||||
public IDictionary<string, string> Headers => _options;
|
||||
|
||||
public Action OnComplete { get; set; }
|
||||
public Action OnError { get; set; }
|
||||
@@ -53,7 +50,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (string.IsNullOrEmpty(contentType))
|
||||
{
|
||||
throw new ArgumentNullException("contentType");
|
||||
throw new ArgumentNullException(nameof(contentType));
|
||||
}
|
||||
|
||||
SourceStream = source;
|
||||
@@ -77,7 +74,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (string.IsNullOrEmpty(contentType))
|
||||
{
|
||||
throw new ArgumentNullException("contentType");
|
||||
throw new ArgumentNullException(nameof(contentType));
|
||||
}
|
||||
|
||||
SourceBytes = source;
|
||||
|
||||
@@ -82,19 +82,19 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (socket == null)
|
||||
{
|
||||
throw new ArgumentNullException("socket");
|
||||
throw new ArgumentNullException(nameof(socket));
|
||||
}
|
||||
if (string.IsNullOrEmpty(remoteEndPoint))
|
||||
{
|
||||
throw new ArgumentNullException("remoteEndPoint");
|
||||
throw new ArgumentNullException(nameof(remoteEndPoint));
|
||||
}
|
||||
if (jsonSerializer == null)
|
||||
{
|
||||
throw new ArgumentNullException("jsonSerializer");
|
||||
throw new ArgumentNullException(nameof(jsonSerializer));
|
||||
}
|
||||
if (logger == null)
|
||||
{
|
||||
throw new ArgumentNullException("logger");
|
||||
throw new ArgumentNullException(nameof(logger));
|
||||
}
|
||||
|
||||
Id = Guid.NewGuid();
|
||||
@@ -148,7 +148,8 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// <summary>
|
||||
/// Called when [receive].
|
||||
/// </summary>
|
||||
/// <param name="bytes">The bytes.</param>
|
||||
/// <param name="memory">The memory block.</param>
|
||||
/// <param name="length">The length of the memory block.</param>
|
||||
private void OnReceiveInternal(Memory<byte> memory, int length)
|
||||
{
|
||||
LastActivityDate = DateTime.UtcNow;
|
||||
@@ -219,7 +220,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (message == null)
|
||||
{
|
||||
throw new ArgumentNullException("message");
|
||||
throw new ArgumentNullException(nameof(message));
|
||||
}
|
||||
|
||||
var json = _jsonSerializer.SerializeToString(message);
|
||||
@@ -237,7 +238,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (buffer == null)
|
||||
{
|
||||
throw new ArgumentNullException("buffer");
|
||||
throw new ArgumentNullException(nameof(buffer));
|
||||
}
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
@@ -249,7 +250,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
{
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
throw new ArgumentNullException("text");
|
||||
throw new ArgumentNullException(nameof(text));
|
||||
}
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
@@ -261,10 +262,7 @@ namespace Emby.Server.Implementations.HttpServer
|
||||
/// Gets the state.
|
||||
/// </summary>
|
||||
/// <value>The state.</value>
|
||||
public WebSocketState State
|
||||
{
|
||||
get { return _socket.State; }
|
||||
}
|
||||
public WebSocketState State => _socket.State;
|
||||
|
||||
/// <summary>
|
||||
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
if (!_affectedPaths.Contains(path, StringComparer.Ordinal))
|
||||
@@ -64,7 +64,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
lock (_timerLock)
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(isoPath))
|
||||
{
|
||||
throw new ArgumentNullException("isoPath");
|
||||
throw new ArgumentNullException(nameof(isoPath));
|
||||
}
|
||||
|
||||
var mounter = _mounters.FirstOrDefault(i => i.CanMount(isoPath));
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
TemporarilyIgnore(path);
|
||||
@@ -95,7 +95,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
// This is an arbitraty amount of time, but delay it because file system writes often trigger events long after the file was actually written to.
|
||||
@@ -145,7 +145,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (taskManager == null)
|
||||
{
|
||||
throw new ArgumentNullException("taskManager");
|
||||
throw new ArgumentNullException(nameof(taskManager));
|
||||
}
|
||||
|
||||
LibraryManager = libraryManager;
|
||||
@@ -268,7 +268,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
path = path.TrimEnd(Path.DirectorySeparatorChar);
|
||||
@@ -469,7 +469,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
var filename = Path.GetFileName(path);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
@@ -85,17 +85,11 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
// Be consistent across platforms because the windows server will fail to query network shares that don't follow windows conventions
|
||||
// https://referencesource.microsoft.com/#mscorlib/system/io/path.cs
|
||||
_invalidFileNameChars = new char[] { '\"', '<', '>', '|', '\0', (Char)1, (Char)2, (Char)3, (Char)4, (Char)5, (Char)6, (Char)7, (Char)8, (Char)9, (Char)10, (Char)11, (Char)12, (Char)13, (Char)14, (Char)15, (Char)16, (Char)17, (Char)18, (Char)19, (Char)20, (Char)21, (Char)22, (Char)23, (Char)24, (Char)25, (Char)26, (Char)27, (Char)28, (Char)29, (Char)30, (Char)31, ':', '*', '?', '\\', '/' };
|
||||
_invalidFileNameChars = new char[] { '\"', '<', '>', '|', '\0', (char)1, (char)2, (char)3, (char)4, (char)5, (char)6, (char)7, (char)8, (char)9, (char)10, (char)11, (char)12, (char)13, (char)14, (char)15, (char)16, (char)17, (char)18, (char)19, (char)20, (char)21, (char)22, (char)23, (char)24, (char)25, (char)26, (char)27, (char)28, (char)29, (char)30, (char)31, ':', '*', '?', '\\', '/' };
|
||||
}
|
||||
}
|
||||
|
||||
public char DirectorySeparatorChar
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.DirectorySeparatorChar;
|
||||
}
|
||||
}
|
||||
public char DirectorySeparatorChar => Path.DirectorySeparatorChar;
|
||||
|
||||
public string GetFullPath(string path)
|
||||
{
|
||||
@@ -112,7 +106,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(filename))
|
||||
{
|
||||
throw new ArgumentNullException("filename");
|
||||
throw new ArgumentNullException(nameof(filename));
|
||||
}
|
||||
|
||||
var extension = Path.GetExtension(filename);
|
||||
@@ -129,7 +123,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(filename))
|
||||
{
|
||||
throw new ArgumentNullException("filename");
|
||||
throw new ArgumentNullException(nameof(filename));
|
||||
}
|
||||
|
||||
var extension = Path.GetExtension(filename);
|
||||
@@ -145,7 +139,7 @@ namespace Emby.Server.Implementations.IO
|
||||
|
||||
public string MakeAbsolutePath(string folderPath, string filePath)
|
||||
{
|
||||
if (String.IsNullOrWhiteSpace(filePath)) return filePath;
|
||||
if (string.IsNullOrWhiteSpace(filePath)) return filePath;
|
||||
|
||||
if (filePath.Contains(@"://")) return filePath; //stream
|
||||
if (filePath.Length > 3 && filePath[1] == ':' && filePath[2] == '/') return filePath; //absolute local path
|
||||
@@ -200,12 +194,12 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(shortcutPath))
|
||||
{
|
||||
throw new ArgumentNullException("shortcutPath");
|
||||
throw new ArgumentNullException(nameof(shortcutPath));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(target))
|
||||
{
|
||||
throw new ArgumentNullException("target");
|
||||
throw new ArgumentNullException(nameof(target));
|
||||
}
|
||||
|
||||
var extension = Path.GetExtension(shortcutPath);
|
||||
@@ -321,7 +315,7 @@ namespace Emby.Server.Implementations.IO
|
||||
return result;
|
||||
}
|
||||
|
||||
private ExtendedFileSystemInfo GetExtendedFileSystemInfo(string path)
|
||||
private static ExtendedFileSystemInfo GetExtendedFileSystemInfo(string path)
|
||||
{
|
||||
var result = new ExtendedFileSystemInfo();
|
||||
|
||||
@@ -456,13 +450,13 @@ namespace Emby.Server.Implementations.IO
|
||||
return new FileStream(path, GetFileMode(mode), GetFileAccess(access), GetFileShare(share), defaultBufferSize, GetFileOptions(fileOpenOptions));
|
||||
}
|
||||
|
||||
private FileOptions GetFileOptions(FileOpenOptions mode)
|
||||
private static FileOptions GetFileOptions(FileOpenOptions mode)
|
||||
{
|
||||
var val = (int)mode;
|
||||
return (FileOptions)val;
|
||||
}
|
||||
|
||||
private FileMode GetFileMode(FileOpenMode mode)
|
||||
private static FileMode GetFileMode(FileOpenMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
@@ -483,7 +477,7 @@ namespace Emby.Server.Implementations.IO
|
||||
}
|
||||
}
|
||||
|
||||
private FileAccess GetFileAccess(FileAccessMode mode)
|
||||
private static FileAccess GetFileAccess(FileAccessMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
@@ -498,7 +492,7 @@ namespace Emby.Server.Implementations.IO
|
||||
}
|
||||
}
|
||||
|
||||
private FileShare GetFileShare(FileShareMode mode)
|
||||
private static FileShare GetFileShare(FileShareMode mode)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
@@ -619,12 +613,12 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(file1))
|
||||
{
|
||||
throw new ArgumentNullException("file1");
|
||||
throw new ArgumentNullException(nameof(file1));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(file2))
|
||||
{
|
||||
throw new ArgumentNullException("file2");
|
||||
throw new ArgumentNullException(nameof(file2));
|
||||
}
|
||||
|
||||
var temp1 = Path.Combine(_tempPath, Guid.NewGuid().ToString("N"));
|
||||
@@ -640,7 +634,7 @@ namespace Emby.Server.Implementations.IO
|
||||
CopyFile(temp1, file2, true);
|
||||
}
|
||||
|
||||
private char GetDirectorySeparatorChar(string path)
|
||||
private static char GetDirectorySeparatorChar(string path)
|
||||
{
|
||||
return Path.DirectorySeparatorChar;
|
||||
}
|
||||
@@ -649,12 +643,12 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(parentPath))
|
||||
{
|
||||
throw new ArgumentNullException("parentPath");
|
||||
throw new ArgumentNullException(nameof(parentPath));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
var separatorChar = GetDirectorySeparatorChar(parentPath);
|
||||
@@ -666,7 +660,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
var parent = GetDirectoryName(path);
|
||||
@@ -688,7 +682,7 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
if (path.EndsWith(":\\", StringComparison.OrdinalIgnoreCase))
|
||||
@@ -772,7 +766,7 @@ namespace Emby.Server.Implementations.IO
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
private string GetName(DriveInfo drive)
|
||||
private static string GetName(DriveInfo drive)
|
||||
{
|
||||
return drive.Name;
|
||||
}
|
||||
@@ -972,7 +966,7 @@ namespace Emby.Server.Implementations.IO
|
||||
}
|
||||
}
|
||||
|
||||
private void RunProcess(string path, string args, string workingDirectory)
|
||||
private static void RunProcess(string path, string args, string workingDirectory)
|
||||
{
|
||||
using (var process = Process.Start(new ProcessStartInfo
|
||||
{
|
||||
|
||||
@@ -15,16 +15,13 @@ namespace Emby.Server.Implementations.IO
|
||||
_fileSystem = fileSystem;
|
||||
}
|
||||
|
||||
public string Extension
|
||||
{
|
||||
get { return ".mblink"; }
|
||||
}
|
||||
public string Extension => ".mblink";
|
||||
|
||||
public string Resolve(string shortcutPath)
|
||||
{
|
||||
if (string.IsNullOrEmpty(shortcutPath))
|
||||
{
|
||||
throw new ArgumentNullException("filenshortcutPathame");
|
||||
throw new ArgumentException("Shortcut path is empty or null.", nameof(shortcutPath));
|
||||
}
|
||||
|
||||
if (string.Equals(Path.GetExtension(shortcutPath), ".mblink", StringComparison.OrdinalIgnoreCase))
|
||||
@@ -41,12 +38,12 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (string.IsNullOrEmpty(shortcutPath))
|
||||
{
|
||||
throw new ArgumentNullException("shortcutPath");
|
||||
throw new ArgumentNullException(nameof(shortcutPath));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(targetPath))
|
||||
{
|
||||
throw new ArgumentNullException("targetPath");
|
||||
throw new ArgumentNullException(nameof(targetPath));
|
||||
}
|
||||
|
||||
_fileSystem.WriteAllText(shortcutPath, targetPath);
|
||||
|
||||
@@ -42,13 +42,7 @@ namespace Emby.Server.Implementations.IO
|
||||
/// Gets the current milliseconds.
|
||||
/// </summary>
|
||||
/// <value>The current milliseconds.</value>
|
||||
protected long CurrentMilliseconds
|
||||
{
|
||||
get
|
||||
{
|
||||
return Environment.TickCount;
|
||||
}
|
||||
}
|
||||
protected long CurrentMilliseconds => Environment.TickCount;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the maximum bytes per second that can be transferred through the base stream.
|
||||
@@ -56,10 +50,7 @@ namespace Emby.Server.Implementations.IO
|
||||
/// <value>The maximum bytes per second.</value>
|
||||
public long MaximumBytesPerSecond
|
||||
{
|
||||
get
|
||||
{
|
||||
return _maximumBytesPerSecond;
|
||||
}
|
||||
get => _maximumBytesPerSecond;
|
||||
set
|
||||
{
|
||||
if (MaximumBytesPerSecond != value)
|
||||
@@ -74,39 +65,21 @@ namespace Emby.Server.Implementations.IO
|
||||
/// Gets a value indicating whether the current stream supports reading.
|
||||
/// </summary>
|
||||
/// <returns>true if the stream supports reading; otherwise, false.</returns>
|
||||
public override bool CanRead
|
||||
{
|
||||
get
|
||||
{
|
||||
return _baseStream.CanRead;
|
||||
}
|
||||
}
|
||||
public override bool CanRead => _baseStream.CanRead;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether the current stream supports seeking.
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
/// <returns>true if the stream supports seeking; otherwise, false.</returns>
|
||||
public override bool CanSeek
|
||||
{
|
||||
get
|
||||
{
|
||||
return _baseStream.CanSeek;
|
||||
}
|
||||
}
|
||||
public override bool CanSeek => _baseStream.CanSeek;
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether the current stream supports writing.
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
/// <returns>true if the stream supports writing; otherwise, false.</returns>
|
||||
public override bool CanWrite
|
||||
{
|
||||
get
|
||||
{
|
||||
return _baseStream.CanWrite;
|
||||
}
|
||||
}
|
||||
public override bool CanWrite => _baseStream.CanWrite;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the length in bytes of the stream.
|
||||
@@ -115,13 +88,7 @@ namespace Emby.Server.Implementations.IO
|
||||
/// <returns>A long value representing the length of the stream in bytes.</returns>
|
||||
/// <exception cref="T:System.NotSupportedException">The base stream does not support seeking. </exception>
|
||||
/// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception>
|
||||
public override long Length
|
||||
{
|
||||
get
|
||||
{
|
||||
return _baseStream.Length;
|
||||
}
|
||||
}
|
||||
public override long Length => _baseStream.Length;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the position within the current stream.
|
||||
@@ -133,14 +100,8 @@ namespace Emby.Server.Implementations.IO
|
||||
/// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception>
|
||||
public override long Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return _baseStream.Position;
|
||||
}
|
||||
set
|
||||
{
|
||||
_baseStream.Position = value;
|
||||
}
|
||||
get => _baseStream.Position;
|
||||
set => _baseStream.Position = value;
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -158,12 +119,12 @@ namespace Emby.Server.Implementations.IO
|
||||
{
|
||||
if (baseStream == null)
|
||||
{
|
||||
throw new ArgumentNullException("baseStream");
|
||||
throw new ArgumentNullException(nameof(baseStream));
|
||||
}
|
||||
|
||||
if (maximumBytesPerSecond < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("maximumBytesPerSecond",
|
||||
throw new ArgumentOutOfRangeException(nameof(maximumBytesPerSecond),
|
||||
maximumBytesPerSecond, "The maximum number of bytes per second can't be negative.");
|
||||
}
|
||||
|
||||
|
||||
@@ -193,10 +193,7 @@ namespace Emby.Server.Implementations.Images
|
||||
return outputPath;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "Dynamic Image Provider"; }
|
||||
}
|
||||
public string Name => "Dynamic Image Provider";
|
||||
|
||||
protected virtual string CreateImage(BaseItem item,
|
||||
List<BaseItem> itemsWithImages,
|
||||
@@ -232,10 +229,7 @@ namespace Emby.Server.Implementations.Images
|
||||
throw new ArgumentException("Unexpected image type");
|
||||
}
|
||||
|
||||
protected virtual int MaxImageAgeDays
|
||||
{
|
||||
get { return 7; }
|
||||
}
|
||||
protected virtual int MaxImageAgeDays => 7;
|
||||
|
||||
public bool HasChanged(BaseItem item, IDirectoryService directoryServicee)
|
||||
{
|
||||
@@ -293,14 +287,7 @@ namespace Emby.Server.Implementations.Images
|
||||
return true;
|
||||
}
|
||||
|
||||
public int Order
|
||||
{
|
||||
get
|
||||
{
|
||||
// Run before the default image provider which will download placeholders
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public int Order => 0;
|
||||
|
||||
protected string CreateSingleImage(List<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType)
|
||||
{
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace Emby.Server.Implementations.Library
|
||||
|
||||
if (string.IsNullOrWhiteSpace(newPasswordHash))
|
||||
{
|
||||
throw new ArgumentNullException("newPasswordHash");
|
||||
throw new ArgumentNullException(nameof(newPasswordHash));
|
||||
}
|
||||
|
||||
user.Password = newPasswordHash;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Progress;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
@@ -147,13 +147,7 @@ namespace Emby.Server.Implementations.Library
|
||||
/// Gets the library items cache.
|
||||
/// </summary>
|
||||
/// <value>The library items cache.</value>
|
||||
private ConcurrentDictionary<Guid, BaseItem> LibraryItemsCache
|
||||
{
|
||||
get
|
||||
{
|
||||
return _libraryItemsCache;
|
||||
}
|
||||
}
|
||||
private ConcurrentDictionary<Guid, BaseItem> LibraryItemsCache => _libraryItemsCache;
|
||||
|
||||
private readonly IFileSystem _fileSystem;
|
||||
|
||||
@@ -188,7 +182,6 @@ namespace Emby.Server.Implementations.Library
|
||||
/// Adds the parts.
|
||||
/// </summary>
|
||||
/// <param name="rules">The rules.</param>
|
||||
/// <param name="pluginFolders">The plugin folders.</param>
|
||||
/// <param name="resolvers">The resolvers.</param>
|
||||
/// <param name="introProviders">The intro providers.</param>
|
||||
/// <param name="itemComparers">The item comparers.</param>
|
||||
@@ -277,7 +270,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
if (item is IItemByName)
|
||||
{
|
||||
@@ -317,7 +310,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
var parent = item.GetOwner() ?? item.GetParent();
|
||||
@@ -329,7 +322,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
if (item.SourceType == SourceType.Channel)
|
||||
@@ -449,7 +442,7 @@ namespace Emby.Server.Implementations.Library
|
||||
ReportItemRemoved(item, parent);
|
||||
}
|
||||
|
||||
private IEnumerable<string> GetMetadataPaths(BaseItem item, IEnumerable<BaseItem> children)
|
||||
private static IEnumerable<string> GetMetadataPaths(BaseItem item, IEnumerable<BaseItem> children)
|
||||
{
|
||||
var list = new List<string>
|
||||
{
|
||||
@@ -502,11 +495,11 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrEmpty(key))
|
||||
{
|
||||
throw new ArgumentNullException("key");
|
||||
throw new ArgumentNullException(nameof(key));
|
||||
}
|
||||
if (type == null)
|
||||
{
|
||||
throw new ArgumentNullException("type");
|
||||
throw new ArgumentNullException(nameof(type));
|
||||
}
|
||||
|
||||
if (key.StartsWith(ConfigurationManager.ApplicationPaths.ProgramDataPath))
|
||||
@@ -542,7 +535,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (fileInfo == null)
|
||||
{
|
||||
throw new ArgumentNullException("fileInfo");
|
||||
throw new ArgumentNullException(nameof(fileInfo));
|
||||
}
|
||||
|
||||
var fullPath = fileInfo.FullName;
|
||||
@@ -823,7 +816,7 @@ namespace Emby.Server.Implementations.Library
|
||||
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
//_logger.LogInformation("FindByPath {0}", path);
|
||||
@@ -921,7 +914,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (value <= 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("Years less than or equal to 0 are invalid.");
|
||||
throw new ArgumentOutOfRangeException(nameof(value),"Years less than or equal to 0 are invalid.");
|
||||
}
|
||||
|
||||
var name = value.ToString(CultureInfo.InvariantCulture);
|
||||
@@ -1249,7 +1242,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (id.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
BaseItem item;
|
||||
@@ -1828,7 +1821,7 @@ namespace Emby.Server.Implementations.Library
|
||||
/// Creates the item.
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <param name="parent">The parent item.</param>
|
||||
/// <returns>Task.</returns>
|
||||
public void CreateItem(BaseItem item, BaseItem parent)
|
||||
{
|
||||
@@ -2023,7 +2016,7 @@ namespace Emby.Server.Implementations.Library
|
||||
return GetCollectionFoldersInternal(item, allUserRootChildren);
|
||||
}
|
||||
|
||||
private List<Folder> GetCollectionFoldersInternal(BaseItem item, List<Folder> allUserRootChildren)
|
||||
private static List<Folder> GetCollectionFoldersInternal(BaseItem item, List<Folder> allUserRootChildren)
|
||||
{
|
||||
return allUserRootChildren
|
||||
.Where(i => string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(item.Path, StringComparer.OrdinalIgnoreCase))
|
||||
@@ -2247,7 +2240,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (parent == null)
|
||||
{
|
||||
throw new ArgumentNullException("parent");
|
||||
throw new ArgumentNullException(nameof(parent));
|
||||
}
|
||||
|
||||
var name = parent.Name;
|
||||
@@ -2313,7 +2306,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrEmpty(name))
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
throw new ArgumentNullException(nameof(name));
|
||||
}
|
||||
|
||||
var parentIdString = parentId.Equals(Guid.Empty) ? null : parentId.ToString("N");
|
||||
@@ -2708,15 +2701,15 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(from))
|
||||
{
|
||||
throw new ArgumentNullException("from");
|
||||
throw new ArgumentNullException(nameof(from));
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(to))
|
||||
{
|
||||
throw new ArgumentNullException("to");
|
||||
throw new ArgumentNullException(nameof(to));
|
||||
}
|
||||
|
||||
from = from.Trim();
|
||||
@@ -2864,7 +2857,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(name))
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
throw new ArgumentNullException(nameof(name));
|
||||
}
|
||||
|
||||
name = _fileSystem.GetValidFilename(name);
|
||||
@@ -2937,7 +2930,7 @@ namespace Emby.Server.Implementations.Library
|
||||
});
|
||||
}
|
||||
|
||||
private bool ValidateNetworkPath(string path)
|
||||
private static bool ValidateNetworkPath(string path)
|
||||
{
|
||||
//if (Environment.OSVersion.Platform == PlatformID.Win32NT)
|
||||
//{
|
||||
@@ -2962,14 +2955,14 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (pathInfo == null)
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(pathInfo));
|
||||
}
|
||||
|
||||
var path = pathInfo.Path;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
if (!_fileSystem.DirectoryExists(path))
|
||||
@@ -3017,7 +3010,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (pathInfo == null)
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(pathInfo));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(pathInfo.NetworkPath) && !ValidateNetworkPath(pathInfo.NetworkPath))
|
||||
@@ -3075,7 +3068,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(name))
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
throw new ArgumentNullException(nameof(name));
|
||||
}
|
||||
|
||||
var rootFolderPath = ConfigurationManager.ApplicationPaths.DefaultUserViewsPath;
|
||||
@@ -3116,7 +3109,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
var removeList = new List<NameValuePair>();
|
||||
@@ -3148,7 +3141,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrEmpty(mediaPath))
|
||||
{
|
||||
throw new ArgumentNullException("mediaPath");
|
||||
throw new ArgumentNullException(nameof(mediaPath));
|
||||
}
|
||||
|
||||
var rootFolderPath = ConfigurationManager.ApplicationPaths.DefaultUserViewsPath;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Library;
|
||||
@@ -74,7 +74,7 @@ namespace Emby.Server.Implementations.Library
|
||||
return list;
|
||||
}
|
||||
|
||||
private bool StreamSupportsExternalStream(MediaStream stream)
|
||||
private static bool StreamSupportsExternalStream(MediaStream stream)
|
||||
{
|
||||
if (stream.IsExternal)
|
||||
{
|
||||
@@ -261,7 +261,7 @@ namespace Emby.Server.Implementations.Library
|
||||
}
|
||||
}
|
||||
|
||||
private void SetKeyProperties(IMediaSourceProvider provider, MediaSourceInfo mediaSource)
|
||||
private static void SetKeyProperties(IMediaSourceProvider provider, MediaSourceInfo mediaSource)
|
||||
{
|
||||
var prefix = provider.GetType().FullName.GetMD5().ToString("N") + LiveStreamIdDelimeter;
|
||||
|
||||
@@ -292,7 +292,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
var hasMediaSources = (IHasMediaSources)item;
|
||||
@@ -401,7 +401,7 @@ namespace Emby.Server.Implementations.Library
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<MediaSourceInfo> SortMediaSources(IEnumerable<MediaSourceInfo> sources)
|
||||
private static IEnumerable<MediaSourceInfo> SortMediaSources(IEnumerable<MediaSourceInfo> sources)
|
||||
{
|
||||
return sources.OrderBy(i =>
|
||||
{
|
||||
@@ -501,7 +501,7 @@ namespace Emby.Server.Implementations.Library
|
||||
}, liveStream as IDirectStreamProvider);
|
||||
}
|
||||
|
||||
private void AddMediaInfo(MediaSourceInfo mediaSource, bool isAudio)
|
||||
private static void AddMediaInfo(MediaSourceInfo mediaSource, bool isAudio)
|
||||
{
|
||||
mediaSource.DefaultSubtitleStreamIndex = null;
|
||||
|
||||
@@ -629,6 +629,7 @@ namespace Emby.Server.Implementations.Library
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogDebug(ex, "_jsonSerializer.DeserializeFromFile threw an exception.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -759,7 +760,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrEmpty(id))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
var info = await GetLiveStreamInfo(id, cancellationToken).ConfigureAwait(false);
|
||||
@@ -770,7 +771,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrEmpty(id))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
await _liveStreamSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
|
||||
@@ -803,7 +804,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrEmpty(id))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
await _liveStreamSemaphore.WaitAsync().ConfigureAwait(false);
|
||||
|
||||
@@ -16,12 +16,12 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrEmpty(str))
|
||||
{
|
||||
throw new ArgumentNullException("str");
|
||||
throw new ArgumentNullException(nameof(str));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(attrib))
|
||||
{
|
||||
throw new ArgumentNullException("attrib");
|
||||
throw new ArgumentNullException(nameof(attrib));
|
||||
}
|
||||
|
||||
string srch = "[" + attrib + "=";
|
||||
|
||||
@@ -117,15 +117,15 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException("fileSystem");
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
if (args == null)
|
||||
{
|
||||
throw new ArgumentNullException("args");
|
||||
throw new ArgumentNullException(nameof(args));
|
||||
}
|
||||
|
||||
// See if a different path came out of the resolver than what went in
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Resolvers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using System;
|
||||
@@ -30,10 +30,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get { return ResolverPriority.Fourth; }
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.Fourth;
|
||||
|
||||
public MultiItemResolverResult ResolveMultiple(Folder parent,
|
||||
List<FileSystemMetadata> files,
|
||||
@@ -264,12 +261,12 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
||||
result.Extras.Any(i => ContainsFile(i, file));
|
||||
}
|
||||
|
||||
private bool ContainsFile(AudioBookFileInfo result, FileSystemMetadata file)
|
||||
private static bool ContainsFile(AudioBookFileInfo result, FileSystemMetadata file)
|
||||
{
|
||||
return string.Equals(result.Path, file.FullName, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
private bool IsIgnored(string filename)
|
||||
private static bool IsIgnored(string filename)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -36,14 +36,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get
|
||||
{
|
||||
// Behind special folder resolver
|
||||
return ResolverPriority.Second;
|
||||
}
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.Second;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the specified args.
|
||||
|
||||
@@ -35,14 +35,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get
|
||||
{
|
||||
// Behind special folder resolver
|
||||
return ResolverPriority.Second;
|
||||
}
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.Second;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the specified args.
|
||||
|
||||
@@ -13,10 +13,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get { return ResolverPriority.Last; }
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.Last;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the specified args.
|
||||
|
||||
@@ -25,13 +25,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public virtual ResolverPriority Priority
|
||||
{
|
||||
get
|
||||
{
|
||||
return ResolverPriority.First;
|
||||
}
|
||||
}
|
||||
public virtual ResolverPriority Priority => ResolverPriority.First;
|
||||
|
||||
/// <summary>
|
||||
/// Sets initial values on the newly resolved item
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Model.Entities;
|
||||
@@ -61,7 +61,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
||||
/// Sets the provider id from path.
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
private void SetProviderIdFromPath(BaseItem item)
|
||||
private static void SetProviderIdFromPath(BaseItem item)
|
||||
{
|
||||
//we need to only look at the name of this actual item (not parents)
|
||||
var justName = Path.GetFileName(item.Path);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Library;
|
||||
@@ -27,17 +27,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get
|
||||
{
|
||||
// Give plugins a chance to catch iso's first
|
||||
// Also since we have to loop through child files looking for videos,
|
||||
// see if we can avoid some of that by letting other resolvers claim folders first
|
||||
// Also run after series resolver
|
||||
return ResolverPriority.Third;
|
||||
}
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.Third;
|
||||
|
||||
public MultiItemResolverResult ResolveMultiple(Folder parent,
|
||||
List<FileSystemMetadata> files,
|
||||
@@ -176,7 +166,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
||||
return result;
|
||||
}
|
||||
|
||||
private bool IsIgnored(string filename)
|
||||
private static bool IsIgnored(string filename)
|
||||
{
|
||||
// Ignore samples
|
||||
var sampleFilename = " " + filename.Replace(".", " ", StringComparison.OrdinalIgnoreCase)
|
||||
@@ -204,7 +194,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
||||
result.Extras.Any(i => ContainsFile(i, file));
|
||||
}
|
||||
|
||||
private bool ContainsFile(VideoFileInfo result, FileSystemMetadata file)
|
||||
private static bool ContainsFile(VideoFileInfo result, FileSystemMetadata file)
|
||||
{
|
||||
return string.Equals(result.Path, file.FullName, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
@@ -330,7 +320,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
||||
/// Sets the provider id from path.
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
private void SetProviderIdsFromPath(Video item)
|
||||
private static void SetProviderIdsFromPath(Video item)
|
||||
{
|
||||
if (item is Movie || item is MusicVideo)
|
||||
{
|
||||
|
||||
@@ -79,13 +79,6 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
||||
return false;
|
||||
}
|
||||
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get
|
||||
{
|
||||
// Behind special folder resolver
|
||||
return ResolverPriority.Second;
|
||||
}
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.Second;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,10 +26,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get { return ResolverPriority.First; }
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.First;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the specified args.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Globalization;
|
||||
using System.Globalization;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Library;
|
||||
@@ -28,6 +28,9 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
|
||||
/// Initializes a new instance of the <see cref="SeasonResolver"/> class.
|
||||
/// </summary>
|
||||
/// <param name="config">The config.</param>
|
||||
/// <param name="libraryManager">The library manager.</param>
|
||||
/// <param name="localization">The localization</param>
|
||||
/// <param name="logger">The logger</param>
|
||||
public SeasonResolver(IServerConfigurationManager config, ILibraryManager libraryManager, ILocalizationManager localization, ILogger logger)
|
||||
{
|
||||
_config = config;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Controller.Resolvers;
|
||||
@@ -38,13 +38,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override ResolverPriority Priority
|
||||
{
|
||||
get
|
||||
{
|
||||
return ResolverPriority.Second;
|
||||
}
|
||||
}
|
||||
public override ResolverPriority Priority => ResolverPriority.Second;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves the specified args.
|
||||
@@ -195,7 +189,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
{
|
||||
throw new ArgumentNullException("path");
|
||||
throw new ArgumentNullException(nameof(path));
|
||||
}
|
||||
|
||||
var extension = Path.GetExtension(path);
|
||||
@@ -236,7 +230,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="path">The path.</param>
|
||||
private void SetProviderIdFromPath(Series item, string path)
|
||||
private static void SetProviderIdFromPath(Series item, string path)
|
||||
{
|
||||
var justName = Path.GetFileName(path);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@@ -64,7 +64,7 @@ namespace Emby.Server.Implementations.Library
|
||||
};
|
||||
}
|
||||
|
||||
private void AddIfMissing(List<string> list, string value)
|
||||
private static void AddIfMissing(List<string> list, string value)
|
||||
{
|
||||
if (!list.Contains(value, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
@@ -85,7 +85,7 @@ namespace Emby.Server.Implementations.Library
|
||||
|
||||
if (string.IsNullOrEmpty(searchTerm))
|
||||
{
|
||||
throw new ArgumentNullException("searchTerm");
|
||||
throw new ArgumentNullException(nameof(searchTerm));
|
||||
}
|
||||
|
||||
searchTerm = searchTerm.Trim().RemoveDiacritics();
|
||||
|
||||
@@ -53,11 +53,11 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (userData == null)
|
||||
{
|
||||
throw new ArgumentNullException("userData");
|
||||
throw new ArgumentNullException(nameof(userData));
|
||||
}
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
@@ -150,7 +150,7 @@ namespace Emby.Server.Implementations.Library
|
||||
/// Gets the internal key.
|
||||
/// </summary>
|
||||
/// <returns>System.String.</returns>
|
||||
private string GetCacheKey(long internalUserId, Guid itemId)
|
||||
private static string GetCacheKey(long internalUserId, Guid itemId)
|
||||
{
|
||||
return internalUserId.ToString(CultureInfo.InvariantCulture) + "-" + itemId.ToString("N");
|
||||
}
|
||||
@@ -198,7 +198,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (data == null)
|
||||
{
|
||||
throw new ArgumentNullException("data");
|
||||
throw new ArgumentNullException(nameof(data));
|
||||
}
|
||||
|
||||
return new UserItemDataDto
|
||||
@@ -226,7 +226,7 @@ namespace Emby.Server.Implementations.Library
|
||||
// If a position has been reported, and if we know the duration
|
||||
if (positionTicks > 0 && hasRuntime)
|
||||
{
|
||||
var pctIn = Decimal.Divide(positionTicks, runtimeTicks) * 100;
|
||||
var pctIn = decimal.Divide(positionTicks, runtimeTicks) * 100;
|
||||
|
||||
// Don't track in very beginning
|
||||
if (pctIn < _config.Configuration.MinResumePct)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Events;
|
||||
using MediaBrowser.Common.Events;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
@@ -44,7 +44,7 @@ namespace Emby.Server.Implementations.Library
|
||||
/// Gets the users.
|
||||
/// </summary>
|
||||
/// <value>The users.</value>
|
||||
public IEnumerable<User> Users { get { return _users; } }
|
||||
public IEnumerable<User> Users => _users;
|
||||
|
||||
private User[] _users;
|
||||
|
||||
@@ -163,7 +163,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (id.Equals(Guid.Empty))
|
||||
{
|
||||
throw new ArgumentNullException("id");
|
||||
throw new ArgumentNullException(nameof(id));
|
||||
}
|
||||
|
||||
return Users.FirstOrDefault(u => u.Id == id);
|
||||
@@ -183,7 +183,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(name))
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
throw new ArgumentNullException(nameof(name));
|
||||
}
|
||||
|
||||
return Users.FirstOrDefault(u => string.Equals(u.Name, name, StringComparison.OrdinalIgnoreCase));
|
||||
@@ -222,7 +222,7 @@ namespace Emby.Server.Implementations.Library
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool IsValidUsernameCharacter(char i)
|
||||
private static bool IsValidUsernameCharacter(char i)
|
||||
{
|
||||
return !char.Equals(i, '<') && !char.Equals(i, '>');
|
||||
}
|
||||
@@ -251,7 +251,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(username))
|
||||
{
|
||||
throw new ArgumentNullException("username");
|
||||
throw new ArgumentNullException(nameof(username));
|
||||
}
|
||||
|
||||
var user = Users
|
||||
@@ -344,7 +344,7 @@ namespace Emby.Server.Implementations.Library
|
||||
return success ? user : null;
|
||||
}
|
||||
|
||||
private string GetAuthenticationProviderId(IAuthenticationProvider provider)
|
||||
private static string GetAuthenticationProviderId(IAuthenticationProvider provider)
|
||||
{
|
||||
return provider.GetType().FullName;
|
||||
}
|
||||
@@ -526,7 +526,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
var hasConfiguredPassword = GetAuthenticationProvider(user).HasPassword(user).Result;
|
||||
@@ -625,12 +625,12 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(newName))
|
||||
{
|
||||
throw new ArgumentNullException("newName");
|
||||
throw new ArgumentNullException(nameof(newName));
|
||||
}
|
||||
|
||||
if (Users.Any(u => u.Id != user.Id && u.Name.Equals(newName, StringComparison.OrdinalIgnoreCase)))
|
||||
@@ -658,7 +658,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
if (user.Id.Equals(Guid.Empty) || !Users.Any(u => u.Id.Equals(user.Id)))
|
||||
@@ -689,7 +689,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(name))
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
throw new ArgumentNullException(nameof(name));
|
||||
}
|
||||
|
||||
if (!IsValidUsername(name))
|
||||
@@ -737,7 +737,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
var allUsers = Users.ToList();
|
||||
@@ -804,7 +804,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
if (user.ConnectLinkType.HasValue && user.ConnectLinkType.Value == UserLinkType.Guest)
|
||||
@@ -823,7 +823,7 @@ namespace Emby.Server.Implementations.Library
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
throw new ArgumentNullException("user");
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
if (newPassword != null)
|
||||
@@ -833,7 +833,7 @@ namespace Emby.Server.Implementations.Library
|
||||
|
||||
if (string.IsNullOrWhiteSpace(newPasswordHash))
|
||||
{
|
||||
throw new ArgumentNullException("newPasswordHash");
|
||||
throw new ArgumentNullException(nameof(newPasswordHash));
|
||||
}
|
||||
|
||||
user.EasyPassword = newPasswordHash;
|
||||
@@ -848,7 +848,7 @@ namespace Emby.Server.Implementations.Library
|
||||
/// </summary>
|
||||
/// <param name="name">The name.</param>
|
||||
/// <returns>User.</returns>
|
||||
private User InstantiateNewUser(string name)
|
||||
private static User InstantiateNewUser(string name)
|
||||
{
|
||||
return new User
|
||||
{
|
||||
@@ -861,10 +861,7 @@ namespace Emby.Server.Implementations.Library
|
||||
};
|
||||
}
|
||||
|
||||
private string PasswordResetFile
|
||||
{
|
||||
get { return Path.Combine(ConfigurationManager.ApplicationPaths.ProgramDataPath, "passwordreset.txt"); }
|
||||
}
|
||||
private string PasswordResetFile => Path.Combine(ConfigurationManager.ApplicationPaths.ProgramDataPath, "passwordreset.txt");
|
||||
|
||||
private string _lastPin;
|
||||
private PasswordPinCreationResult _lastPasswordPinCreationResult;
|
||||
@@ -1047,7 +1044,7 @@ namespace Emby.Server.Implementations.Library
|
||||
}
|
||||
}
|
||||
|
||||
private UserPolicy GetDefaultPolicy(User user)
|
||||
private static UserPolicy GetDefaultPolicy(User user)
|
||||
{
|
||||
return new UserPolicy
|
||||
{
|
||||
@@ -1109,12 +1106,12 @@ namespace Emby.Server.Implementations.Library
|
||||
}
|
||||
}
|
||||
|
||||
private string GetPolicyFilePath(User user)
|
||||
private static string GetPolicyFilePath(User user)
|
||||
{
|
||||
return Path.Combine(user.ConfigurationDirectoryPath, "policy.xml");
|
||||
}
|
||||
|
||||
private string GetConfigurationFilePath(User user)
|
||||
private static string GetConfigurationFilePath(User user)
|
||||
{
|
||||
return Path.Combine(user.ConfigurationDirectoryPath, "config.xml");
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
@@ -254,27 +254,15 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
|
||||
if (requiresRefresh)
|
||||
{
|
||||
await _libraryManager.ValidateMediaLibrary(new SimpleProgress<Double>(), CancellationToken.None);
|
||||
await _libraryManager.ValidateMediaLibrary(new SimpleProgress<double>(), CancellationToken.None);
|
||||
}
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "Emby"; }
|
||||
}
|
||||
public string Name => "Emby";
|
||||
|
||||
public string DataPath
|
||||
{
|
||||
get { return Path.Combine(_config.CommonApplicationPaths.DataPath, "livetv"); }
|
||||
}
|
||||
public string DataPath => Path.Combine(_config.CommonApplicationPaths.DataPath, "livetv");
|
||||
|
||||
private string DefaultRecordingPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(DataPath, "recordings");
|
||||
}
|
||||
}
|
||||
private string DefaultRecordingPath => Path.Combine(DataPath, "recordings");
|
||||
|
||||
private string RecordingPath
|
||||
{
|
||||
@@ -288,10 +276,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
}
|
||||
}
|
||||
|
||||
public string HomePageUrl
|
||||
{
|
||||
get { return "https://github.com/jellyfin/jellyfin"; }
|
||||
}
|
||||
public string HomePageUrl => "https://github.com/jellyfin/jellyfin";
|
||||
|
||||
public async Task RefreshSeriesTimers(CancellationToken cancellationToken, IProgress<double> progress)
|
||||
{
|
||||
@@ -491,7 +476,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
return GetEpgChannelFromTunerChannel(info, tunerChannel, epgChannels);
|
||||
}
|
||||
|
||||
private string GetMappedChannel(string channelId, NameValuePair[] mappings)
|
||||
private static string GetMappedChannel(string channelId, NameValuePair[] mappings)
|
||||
{
|
||||
foreach (NameValuePair mapping in mappings)
|
||||
{
|
||||
@@ -850,7 +835,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private void UpdateExistingTimerWithNewMetadata(TimerInfo existingTimer, TimerInfo updatedTimer)
|
||||
private static void UpdateExistingTimerWithNewMetadata(TimerInfo existingTimer, TimerInfo updatedTimer)
|
||||
{
|
||||
// Update the program info but retain the status
|
||||
existingTimer.ChannelId = updatedTimer.ChannelId;
|
||||
@@ -980,7 +965,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
|
||||
if (string.IsNullOrWhiteSpace(tunerHostId))
|
||||
{
|
||||
throw new ArgumentNullException("tunerHostId");
|
||||
throw new ArgumentNullException(nameof(tunerHostId));
|
||||
}
|
||||
|
||||
return info.EnabledTuners.Contains(tunerHostId, StringComparer.OrdinalIgnoreCase);
|
||||
@@ -1114,7 +1099,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(channelId))
|
||||
{
|
||||
throw new ArgumentNullException("channelId");
|
||||
throw new ArgumentNullException(nameof(channelId));
|
||||
}
|
||||
|
||||
foreach (var hostInstance in _liveTvManager.TunerHosts)
|
||||
@@ -1342,7 +1327,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
{
|
||||
if (timer == null)
|
||||
{
|
||||
throw new ArgumentNullException("timer");
|
||||
throw new ArgumentNullException(nameof(timer));
|
||||
}
|
||||
|
||||
LiveTvProgram programInfo = null;
|
||||
@@ -1795,7 +1780,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
}
|
||||
}
|
||||
|
||||
private string GetPostProcessArguments(string path, string arguments)
|
||||
private static string GetPostProcessArguments(string path, string arguments)
|
||||
{
|
||||
return arguments.Replace("{path}", path, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
@@ -2501,7 +2486,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
{
|
||||
if (seriesTimer == null)
|
||||
{
|
||||
throw new ArgumentNullException("seriesTimer");
|
||||
throw new ArgumentNullException(nameof(seriesTimer));
|
||||
}
|
||||
|
||||
var query = new InternalItemsQuery
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
@@ -55,14 +55,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
_assemblyInfo = assemblyInfo;
|
||||
}
|
||||
|
||||
private bool CopySubtitles
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
//return string.Equals(OutputFormat, "mkv", StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
}
|
||||
private static bool CopySubtitles => false;
|
||||
|
||||
public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
|
||||
{
|
||||
@@ -226,7 +219,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
return inputModifier + " " + commandLineArgs;
|
||||
}
|
||||
|
||||
private string GetAudioArgs(MediaSourceInfo mediaSource)
|
||||
private static string GetAudioArgs(MediaSourceInfo mediaSource)
|
||||
{
|
||||
var mediaStreams = mediaSource.MediaStreams ?? new List<MediaStream>();
|
||||
var inputAudioCodec = mediaStreams.Where(i => i.Type == MediaStreamType.Audio).Select(i => i.Codec).FirstOrDefault() ?? string.Empty;
|
||||
@@ -242,7 +235,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
//return "-codec:a:0 aac -strict experimental -ab 320000";
|
||||
}
|
||||
|
||||
private bool EncodeVideo(MediaSourceInfo mediaSource)
|
||||
private static bool EncodeVideo(MediaSourceInfo mediaSource)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -383,6 +376,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
// TODO Investigate and properly fix.
|
||||
// Don't spam the log. This doesn't seem to throw in windows, but sometimes under linux
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -68,7 +68,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
{
|
||||
if (newList == null)
|
||||
{
|
||||
throw new ArgumentNullException("newList");
|
||||
throw new ArgumentNullException(nameof(newList));
|
||||
}
|
||||
|
||||
var file = _dataPath + ".json";
|
||||
@@ -85,7 +85,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
var list = GetAll().ToList();
|
||||
@@ -106,7 +106,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
throw new ArgumentNullException("item");
|
||||
throw new ArgumentNullException(nameof(item));
|
||||
}
|
||||
|
||||
var list = GetAll().ToList();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
@@ -90,7 +90,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||
AddOrUpdateSystemTimer(item);
|
||||
}
|
||||
|
||||
private bool ShouldStartTimer(TimerInfo item)
|
||||
private static bool ShouldStartTimer(TimerInfo item)
|
||||
{
|
||||
if (item.Status == RecordingStatus.Completed ||
|
||||
item.Status == RecordingStatus.Cancelled)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System.Net;
|
||||
using System.Net;
|
||||
using MediaBrowser.Common;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
@@ -38,12 +38,9 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
_appHost = appHost;
|
||||
}
|
||||
|
||||
private string UserAgent
|
||||
{
|
||||
get { return "Emby/" + _appHost.ApplicationVersion; }
|
||||
}
|
||||
private string UserAgent => "Emby/" + _appHost.ApplicationVersion;
|
||||
|
||||
private List<string> GetScheduleRequestDates(DateTime startDateUtc, DateTime endDateUtc)
|
||||
private static List<string> GetScheduleRequestDates(DateTime startDateUtc, DateTime endDateUtc)
|
||||
{
|
||||
List<string> dates = new List<string>();
|
||||
|
||||
@@ -63,7 +60,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
{
|
||||
if (string.IsNullOrEmpty(channelId))
|
||||
{
|
||||
throw new ArgumentNullException("channelId");
|
||||
throw new ArgumentNullException(nameof(channelId));
|
||||
}
|
||||
|
||||
// Normalize incoming input
|
||||
@@ -189,7 +186,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
}
|
||||
}
|
||||
|
||||
private int GetSizeOrder(ScheduleDirect.ImageData image)
|
||||
private static int GetSizeOrder(ScheduleDirect.ImageData image)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(image.height))
|
||||
{
|
||||
@@ -202,7 +199,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
return 0;
|
||||
}
|
||||
|
||||
private string GetChannelNumber(ScheduleDirect.Map map)
|
||||
private static string GetChannelNumber(ScheduleDirect.Map map)
|
||||
{
|
||||
var channelNumber = map.logicalChannelNumber;
|
||||
|
||||
@@ -218,7 +215,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
return channelNumber.TrimStart('0');
|
||||
}
|
||||
|
||||
private bool IsMovie(ScheduleDirect.ProgramDetails programInfo)
|
||||
private static bool IsMovie(ScheduleDirect.ProgramDetails programInfo)
|
||||
{
|
||||
return string.Equals(programInfo.entityType, "movie", StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
@@ -390,7 +387,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
return info;
|
||||
}
|
||||
|
||||
private DateTime GetDate(string value)
|
||||
private static DateTime GetDate(string value)
|
||||
{
|
||||
var date = DateTime.ParseExact(value, "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", CultureInfo.InvariantCulture);
|
||||
|
||||
@@ -429,7 +426,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
}
|
||||
}
|
||||
|
||||
private double GetAspectRatio(ScheduleDirect.ImageData i)
|
||||
private static double GetAspectRatio(ScheduleDirect.ImageData i)
|
||||
{
|
||||
int width = 0;
|
||||
int height = 0;
|
||||
@@ -664,7 +661,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
}
|
||||
}
|
||||
|
||||
options.RequestHeaders["token"] = await GetToken(providerInfo, options.CancellationToken).ConfigureAwait(false);;
|
||||
options.RequestHeaders["token"] = await GetToken(providerInfo, options.CancellationToken).ConfigureAwait(false);
|
||||
return await Post(options, false, providerInfo).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -765,16 +762,10 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
}
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "Schedules Direct"; }
|
||||
}
|
||||
public string Name => "Schedules Direct";
|
||||
|
||||
public static string TypeName = "SchedulesDirect";
|
||||
public string Type
|
||||
{
|
||||
get { return TypeName; }
|
||||
}
|
||||
public string Type => TypeName;
|
||||
|
||||
private async Task<bool> HasLineup(ListingsProviderInfo info, CancellationToken cancellationToken)
|
||||
{
|
||||
@@ -951,7 +942,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
|
||||
return null;
|
||||
}
|
||||
|
||||
private string NormalizeName(string value)
|
||||
private static string NormalizeName(string value)
|
||||
{
|
||||
return value.Replace(" ", string.Empty).Replace("-", string.Empty);
|
||||
}
|
||||
|
||||
@@ -36,15 +36,9 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
|
||||
_zipClient = zipClient;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "XmlTV"; }
|
||||
}
|
||||
public string Name => "XmlTV";
|
||||
|
||||
public string Type
|
||||
{
|
||||
get { return "xmltv"; }
|
||||
}
|
||||
public string Type => "xmltv";
|
||||
|
||||
private string GetLanguage(ListingsProviderInfo info)
|
||||
{
|
||||
@@ -78,7 +72,7 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
|
||||
{
|
||||
CancellationToken = cancellationToken,
|
||||
Url = path,
|
||||
Progress = new SimpleProgress<Double>(),
|
||||
Progress = new SimpleProgress<double>(),
|
||||
DecompressionMethod = CompressionMethod.Gzip,
|
||||
|
||||
// It's going to come back gzipped regardless of this value
|
||||
@@ -164,7 +158,7 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(channelId))
|
||||
{
|
||||
throw new ArgumentNullException("channelId");
|
||||
throw new ArgumentNullException(nameof(channelId));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -187,7 +181,7 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
|
||||
.Select(p => GetProgramInfo(p, info));
|
||||
}
|
||||
|
||||
private ProgramInfo GetProgramInfo(XmlTvProgram program, ListingsProviderInfo info)
|
||||
private static ProgramInfo GetProgramInfo(XmlTvProgram program, ListingsProviderInfo info)
|
||||
{
|
||||
string episodeTitle = program.Episode?.Title;
|
||||
|
||||
@@ -210,9 +204,9 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
|
||||
IsMovie = program.Categories.Any(c => info.MovieCategories.Contains(c, StringComparer.OrdinalIgnoreCase)),
|
||||
IsNews = program.Categories.Any(c => info.NewsCategories.Contains(c, StringComparer.OrdinalIgnoreCase)),
|
||||
IsSports = program.Categories.Any(c => info.SportsCategories.Contains(c, StringComparer.OrdinalIgnoreCase)),
|
||||
ImageUrl = program.Icon != null && !String.IsNullOrEmpty(program.Icon.Source) ? program.Icon.Source : null,
|
||||
HasImage = program.Icon != null && !String.IsNullOrEmpty(program.Icon.Source),
|
||||
OfficialRating = program.Rating != null && !String.IsNullOrEmpty(program.Rating.Value) ? program.Rating.Value : null,
|
||||
ImageUrl = program.Icon != null && !string.IsNullOrEmpty(program.Icon.Source) ? program.Icon.Source : null,
|
||||
HasImage = program.Icon != null && !string.IsNullOrEmpty(program.Icon.Source),
|
||||
OfficialRating = program.Rating != null && !string.IsNullOrEmpty(program.Rating.Value) ? program.Rating.Value : null,
|
||||
CommunityRating = program.StarRating,
|
||||
SeriesId = program.Episode == null ? null : program.Title.GetMD5().ToString("N")
|
||||
};
|
||||
@@ -246,7 +240,7 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
|
||||
}
|
||||
|
||||
// Construct an id from the channel and start date
|
||||
programInfo.Id = String.Format("{0}_{1:O}", program.ChannelId, program.StartDate);
|
||||
programInfo.Id = string.Format("{0}_{1:O}", program.ChannelId, program.StartDate);
|
||||
|
||||
if (programInfo.IsMovie)
|
||||
{
|
||||
@@ -294,7 +288,7 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
|
||||
{
|
||||
Id = c.Id,
|
||||
Name = c.DisplayName,
|
||||
ImageUrl = c.Icon != null && !String.IsNullOrEmpty(c.Icon.Source) ? c.Icon.Source : null,
|
||||
ImageUrl = c.Icon != null && !string.IsNullOrEmpty(c.Icon.Source) ? c.Icon.Source : null,
|
||||
Number = string.IsNullOrWhiteSpace(c.Number) ? c.Id : c.Number
|
||||
|
||||
}).ToList();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common;
|
||||
using MediaBrowser.Common;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Drawing;
|
||||
using MediaBrowser.Controller.Dto;
|
||||
@@ -321,6 +321,7 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogDebug(ex, "GetImageCacheTag raised an exception in LiveTvDtoService.FillImages.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -331,10 +332,10 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
{
|
||||
try
|
||||
{
|
||||
dto.ParentBackdropImageTags = new string[]
|
||||
{
|
||||
_imageProcessor.GetImageCacheTag(program, image)
|
||||
};
|
||||
dto.ParentBackdropImageTags = new[]
|
||||
{
|
||||
_imageProcessor.GetImageCacheTag(program, image)
|
||||
};
|
||||
dto.ParentBackdropItemId = program.Id.ToString("N");
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Progress;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
@@ -104,10 +104,7 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
/// Gets the services.
|
||||
/// </summary>
|
||||
/// <value>The services.</value>
|
||||
public IReadOnlyList<ILiveTvService> Services
|
||||
{
|
||||
get { return _services; }
|
||||
}
|
||||
public IReadOnlyList<ILiveTvService> Services => _services;
|
||||
|
||||
private LiveTvOptions GetConfiguration()
|
||||
{
|
||||
@@ -167,15 +164,9 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
});
|
||||
}
|
||||
|
||||
public ITunerHost[] TunerHosts
|
||||
{
|
||||
get { return _tunerHosts; }
|
||||
}
|
||||
public ITunerHost[] TunerHosts => _tunerHosts;
|
||||
|
||||
public IListingsProvider[] ListingProviders
|
||||
{
|
||||
get { return _listingProviders; }
|
||||
}
|
||||
public IListingsProvider[] ListingProviders => _listingProviders;
|
||||
|
||||
public List<NameIdPair> GetTunerHostTypes()
|
||||
{
|
||||
@@ -323,7 +314,7 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
return _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
private void Normalize(MediaSourceInfo mediaSource, ILiveTvService service, bool isVideo)
|
||||
private static void Normalize(MediaSourceInfo mediaSource, ILiveTvService service, bool isVideo)
|
||||
{
|
||||
// Not all of the plugins are setting this
|
||||
mediaSource.IsInfiniteStream = true;
|
||||
@@ -1418,6 +1409,7 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
|
||||
if (query.IsInProgress ?? false)
|
||||
{
|
||||
//TODO Fix The co-variant conversion between Video[] and BaseItem[], this can generate runtime issues.
|
||||
result.Items = result
|
||||
.Items
|
||||
.OfType<Video>()
|
||||
@@ -2188,7 +2180,7 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
return Services.Select(GetServiceInfo).ToArray();
|
||||
}
|
||||
|
||||
private LiveTvServiceInfo GetServiceInfo(ILiveTvService service)
|
||||
private static LiveTvServiceInfo GetServiceInfo(ILiveTvService service)
|
||||
{
|
||||
return new LiveTvServiceInfo
|
||||
{
|
||||
@@ -2245,7 +2237,7 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
return service.ResetTuner(parts[1], cancellationToken);
|
||||
}
|
||||
|
||||
private void RemoveFields(DtoOptions options)
|
||||
private static void RemoveFields(DtoOptions options)
|
||||
{
|
||||
var fields = options.Fields.ToList();
|
||||
|
||||
|
||||
@@ -20,20 +20,11 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
_config = config;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "Refresh Guide"; }
|
||||
}
|
||||
public string Name => "Refresh Guide";
|
||||
|
||||
public string Description
|
||||
{
|
||||
get { return "Downloads channel information from live tv services."; }
|
||||
}
|
||||
public string Description => "Downloads channel information from live tv services.";
|
||||
|
||||
public string Category
|
||||
{
|
||||
get { return "Live TV"; }
|
||||
}
|
||||
public string Category => "Live TV";
|
||||
|
||||
public Task Execute(System.Threading.CancellationToken cancellationToken, IProgress<double> progress)
|
||||
{
|
||||
@@ -60,24 +51,12 @@ namespace Emby.Server.Implementations.LiveTv
|
||||
return _config.GetConfiguration<LiveTvOptions>("livetv");
|
||||
}
|
||||
|
||||
public bool IsHidden
|
||||
{
|
||||
get { return _liveTvManager.Services.Count == 1 && GetConfiguration().TunerHosts.Length == 0; }
|
||||
}
|
||||
public bool IsHidden => _liveTvManager.Services.Count == 1 && GetConfiguration().TunerHosts.Length == 0;
|
||||
|
||||
public bool IsEnabled
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsEnabled => true;
|
||||
|
||||
public bool IsLogged
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsLogged => true;
|
||||
|
||||
public string Key
|
||||
{
|
||||
get { return "RefreshGuide"; }
|
||||
}
|
||||
public string Key => "RefreshGuide";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,13 +40,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
FileSystem = fileSystem;
|
||||
}
|
||||
|
||||
public virtual bool IsSupported
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public virtual bool IsSupported => true;
|
||||
|
||||
protected abstract Task<List<ChannelInfo>> GetChannelsInternal(TunerHostInfo tuner, CancellationToken cancellationToken);
|
||||
public abstract string Type { get; }
|
||||
@@ -140,7 +134,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
{
|
||||
if (string.IsNullOrEmpty(channelId))
|
||||
{
|
||||
throw new ArgumentNullException("channelId");
|
||||
throw new ArgumentNullException(nameof(channelId));
|
||||
}
|
||||
|
||||
if (IsValidChannelId(channelId))
|
||||
@@ -175,7 +169,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
{
|
||||
if (string.IsNullOrEmpty(channelId))
|
||||
{
|
||||
throw new ArgumentNullException("channelId");
|
||||
throw new ArgumentNullException(nameof(channelId));
|
||||
}
|
||||
|
||||
if (!IsValidChannelId(channelId))
|
||||
@@ -228,18 +222,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
throw new LiveTvConflictException();
|
||||
}
|
||||
|
||||
protected virtual string ChannelIdPrefix
|
||||
{
|
||||
get
|
||||
{
|
||||
return Type + "_";
|
||||
}
|
||||
}
|
||||
protected virtual string ChannelIdPrefix => Type + "_";
|
||||
|
||||
protected virtual bool IsValidChannelId(string channelId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(channelId))
|
||||
{
|
||||
throw new ArgumentNullException("channelId");
|
||||
throw new ArgumentNullException(nameof(channelId));
|
||||
}
|
||||
|
||||
return channelId.StartsWith(ChannelIdPrefix, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller.LiveTv;
|
||||
using MediaBrowser.Model.Dto;
|
||||
@@ -42,28 +42,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
_environment = environment;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "HD Homerun"; }
|
||||
}
|
||||
public string Name => "HD Homerun";
|
||||
|
||||
public override string Type
|
||||
{
|
||||
get { return DeviceType; }
|
||||
}
|
||||
public override string Type => DeviceType;
|
||||
|
||||
public static string DeviceType
|
||||
{
|
||||
get { return "hdhomerun"; }
|
||||
}
|
||||
public static string DeviceType => "hdhomerun";
|
||||
|
||||
protected override string ChannelIdPrefix
|
||||
{
|
||||
get
|
||||
{
|
||||
return "hdhr_";
|
||||
}
|
||||
}
|
||||
protected override string ChannelIdPrefix => "hdhr_";
|
||||
|
||||
private string GetChannelId(TunerHostInfo info, Channels i)
|
||||
{
|
||||
@@ -274,8 +259,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
|
||||
for (int i = 0; i < model.TunerCount; ++i)
|
||||
{
|
||||
var name = String.Format("Tuner {0}", i + 1);
|
||||
var currentChannel = "none"; /// @todo Get current channel and map back to Station Id
|
||||
var name = string.Format("Tuner {0}", i + 1);
|
||||
var currentChannel = "none"; /// @todo Get current channel and map back to Station Id
|
||||
var isAvailable = await manager.CheckTunerAvailability(ipInfo, i, cancellationToken).ConfigureAwait(false);
|
||||
LiveTvTunerStatus status = isAvailable ? LiveTvTunerStatus.Available : LiveTvTunerStatus.LiveTv;
|
||||
tuners.Add(new LiveTvTunerInfo
|
||||
@@ -325,7 +310,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
return await GetTunerInfosHttp(info, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private string GetApiUrl(TunerHostInfo info)
|
||||
private static string GetApiUrl(TunerHostInfo info)
|
||||
{
|
||||
var url = info.Url;
|
||||
|
||||
@@ -359,7 +344,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
return Config.GetConfiguration<EncodingOptions>("encoding");
|
||||
}
|
||||
|
||||
private string GetHdHrIdFromChannelId(string channelId)
|
||||
private static string GetHdHrIdFromChannelId(string channelId)
|
||||
{
|
||||
return channelId.Split('_')[1];
|
||||
}
|
||||
|
||||
@@ -37,10 +37,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
{
|
||||
var commands = new List<Tuple<string, string>>();
|
||||
|
||||
if (!String.IsNullOrEmpty(_channel))
|
||||
if (!string.IsNullOrEmpty(_channel))
|
||||
commands.Add(Tuple.Create("channel", _channel));
|
||||
|
||||
if (!String.IsNullOrEmpty(_program))
|
||||
if (!string.IsNullOrEmpty(_program))
|
||||
commands.Add(Tuple.Create("program", _program));
|
||||
return commands;
|
||||
}
|
||||
@@ -61,11 +61,11 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
{
|
||||
var commands = new List<Tuple<string, string>>();
|
||||
|
||||
if (!String.IsNullOrEmpty(_channel))
|
||||
if (!string.IsNullOrEmpty(_channel))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_profile) && !string.Equals(_profile, "native", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
commands.Add(Tuple.Create("vchannel", String.Format("{0} transcode={1}", _channel, _profile)));
|
||||
commands.Add(Tuple.Create("vchannel", string.Format("{0} transcode={1}", _channel, _profile)));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -123,7 +123,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<bool> CheckTunerAvailability(ISocket socket, IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken)
|
||||
private static async Task<bool> CheckTunerAvailability(ISocket socket, IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken)
|
||||
{
|
||||
var ipEndPoint = new IpEndPointInfo(remoteIp, HdHomeRunPort);
|
||||
|
||||
@@ -164,7 +164,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
continue;
|
||||
|
||||
_activeTuner = i;
|
||||
var lockKeyString = String.Format("{0:d}", lockKeyValue);
|
||||
var lockKeyString = string.Format("{0:d}", lockKeyValue);
|
||||
var lockkeyMsg = CreateSetMessage(i, "lockkey", lockKeyString, null);
|
||||
await tcpClient.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
|
||||
var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
|
||||
@@ -188,7 +188,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
|
||||
}
|
||||
|
||||
var targetValue = String.Format("rtp://{0}:{1}", localIp, localPort);
|
||||
var targetValue = string.Format("rtp://{0}:{1}", localIp, localPort);
|
||||
var targetMsg = CreateSetMessage(i, "target", targetValue, lockKeyValue);
|
||||
|
||||
await tcpClient.SendToAsync(targetMsg, 0, targetMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
|
||||
@@ -262,7 +262,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
|
||||
private static byte[] CreateGetMessage(int tuner, string name)
|
||||
{
|
||||
var byteName = Encoding.UTF8.GetBytes(String.Format("/tuner{0}/{1}\0", tuner, name));
|
||||
var byteName = Encoding.UTF8.GetBytes(string.Format("/tuner{0}/{1}\0", tuner, name));
|
||||
int messageLength = byteName.Length + 10; // 4 bytes for header + 4 bytes for crc + 2 bytes for tag name and length
|
||||
|
||||
var message = new byte[messageLength];
|
||||
@@ -280,10 +280,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
return message;
|
||||
}
|
||||
|
||||
private static byte[] CreateSetMessage(int tuner, String name, String value, uint? lockkey)
|
||||
private static byte[] CreateSetMessage(int tuner, string name, string value, uint? lockkey)
|
||||
{
|
||||
var byteName = Encoding.UTF8.GetBytes(String.Format("/tuner{0}/{1}\0", tuner, name));
|
||||
var byteValue = Encoding.UTF8.GetBytes(String.Format("{0}\0", value));
|
||||
var byteName = Encoding.UTF8.GetBytes(string.Format("/tuner{0}/{1}\0", tuner, name));
|
||||
var byteValue = Encoding.UTF8.GetBytes(string.Format("{0}\0", value));
|
||||
|
||||
int messageLength = byteName.Length + byteValue.Length + 12;
|
||||
if (lockkey.HasValue)
|
||||
@@ -360,7 +360,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
|
||||
private static bool ParseReturnMessage(byte[] buf, int numBytes, out string returnVal)
|
||||
{
|
||||
returnVal = String.Empty;
|
||||
returnVal = string.Empty;
|
||||
|
||||
if (numBytes < 4)
|
||||
return false;
|
||||
@@ -411,7 +411,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
|
||||
private class HdHomerunCrc
|
||||
{
|
||||
private static UInt32[] crc_table = {
|
||||
private static uint[] crc_table = {
|
||||
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
||||
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
||||
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
||||
@@ -477,7 +477,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
|
||||
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d };
|
||||
|
||||
public static UInt32 GetCrc32(byte[] bytes, int numBytes)
|
||||
public static uint GetCrc32(byte[] bytes, int numBytes)
|
||||
{
|
||||
var hash = 0xffffffff;
|
||||
for (var i = 0; i < numBytes; i++)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@@ -38,7 +38,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
EnableStreamSharing = true;
|
||||
}
|
||||
|
||||
private Socket CreateSocket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
|
||||
private static Socket CreateSocket(AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType)
|
||||
{
|
||||
var socket = new Socket(addressFamily, SocketType.Stream, ProtocolType.Tcp);
|
||||
|
||||
@@ -144,7 +144,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
});
|
||||
}
|
||||
|
||||
private void Resolve(TaskCompletionSource<bool> openTaskCompletionSource)
|
||||
private static void Resolve(TaskCompletionSource<bool> openTaskCompletionSource)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
@@ -204,16 +204,16 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
public override async Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
|
||||
{
|
||||
if (buffer == null)
|
||||
throw new ArgumentNullException("buffer");
|
||||
throw new ArgumentNullException(nameof(buffer));
|
||||
|
||||
if (offset + count < 0)
|
||||
throw new ArgumentOutOfRangeException("offset + count must not be negative", "offset+count");
|
||||
throw new ArgumentOutOfRangeException(nameof(offset), "offset + count must not be negative");
|
||||
|
||||
if (offset + count > buffer.Length)
|
||||
throw new ArgumentException("offset + count must not be greater than the length of buffer", "offset+count");
|
||||
throw new ArgumentException("offset + count must not be greater than the length of buffer");
|
||||
|
||||
if (disposed)
|
||||
throw new ObjectDisposedException(typeof(UdpClientStream).ToString());
|
||||
throw new ObjectDisposedException(nameof(UdpClientStream));
|
||||
|
||||
// This will always receive a 1328 packet size (PacketSize + RtpHeaderSize)
|
||||
// The RTP header will be stripped so see how many reads we need to make to fill the buffer.
|
||||
@@ -238,16 +238,16 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
if (buffer == null)
|
||||
throw new ArgumentNullException("buffer");
|
||||
throw new ArgumentNullException(nameof(buffer));
|
||||
|
||||
if (offset + count < 0)
|
||||
throw new ArgumentOutOfRangeException("offset + count must not be negative", "offset+count");
|
||||
|
||||
if (offset + count > buffer.Length)
|
||||
throw new ArgumentException("offset + count must not be greater than the length of buffer", "offset+count");
|
||||
throw new ArgumentException("offset + count must not be greater than the length of buffer");
|
||||
|
||||
if (disposed)
|
||||
throw new ObjectDisposedException(typeof(UdpClientStream).ToString());
|
||||
throw new ObjectDisposedException(nameof(UdpClientStream));
|
||||
|
||||
// This will always receive a 1328 packet size (PacketSize + RtpHeaderSize)
|
||||
// The RTP header will be stripped so see how many reads we need to make to fill the buffer.
|
||||
@@ -274,49 +274,19 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||
disposed = true;
|
||||
}
|
||||
|
||||
public override bool CanRead
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
public override bool CanRead => throw new NotImplementedException();
|
||||
|
||||
public override bool CanSeek
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
public override bool CanSeek => throw new NotImplementedException();
|
||||
|
||||
public override bool CanWrite
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
public override bool CanWrite => throw new NotImplementedException();
|
||||
|
||||
public override long Length
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
public override long Length => throw new NotImplementedException();
|
||||
|
||||
public override long Position
|
||||
{
|
||||
get
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
get => throw new NotImplementedException();
|
||||
|
||||
set
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
set => throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void Flush()
|
||||
|
||||
@@ -217,13 +217,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual int EmptyReadLimit
|
||||
{
|
||||
get
|
||||
{
|
||||
return 1000;
|
||||
}
|
||||
}
|
||||
protected virtual int EmptyReadLimit => 1000;
|
||||
|
||||
private void TrySeek(FileStream stream, long offset)
|
||||
{
|
||||
|
||||
@@ -39,15 +39,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
_mediaSourceManager = mediaSourceManager;
|
||||
}
|
||||
|
||||
public override string Type
|
||||
{
|
||||
get { return "m3u"; }
|
||||
}
|
||||
public override string Type => "m3u";
|
||||
|
||||
public virtual string Name
|
||||
{
|
||||
get { return "M3U Tuner"; }
|
||||
}
|
||||
public virtual string Name => "M3U Tuner";
|
||||
|
||||
private string GetFullChannelIdPrefix(TunerHostInfo info)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
@@ -251,7 +251,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
return numberString;
|
||||
}
|
||||
|
||||
private bool IsValidChannelNumber(string numberString)
|
||||
private static bool IsValidChannelNumber(string numberString)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(numberString) ||
|
||||
string.Equals(numberString, "-1", StringComparison.OrdinalIgnoreCase) ||
|
||||
@@ -269,7 +269,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
return true;
|
||||
}
|
||||
|
||||
private string GetChannelName(string extInf, Dictionary<string, string> attributes)
|
||||
private static string GetChannelName(string extInf, Dictionary<string, string> attributes)
|
||||
{
|
||||
var nameParts = extInf.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var nameInExtInf = nameParts.Length > 1 ? nameParts.Last().Trim() : null;
|
||||
@@ -314,7 +314,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
return name;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> ParseExtInf(string line, out string remaining)
|
||||
private static Dictionary<string, string> ParseExtInf(string line, out string remaining)
|
||||
{
|
||||
var dict = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Model.Extensions;
|
||||
using MediaBrowser.Model.Extensions;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Globalization;
|
||||
@@ -165,13 +165,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
/// Gets the localization path.
|
||||
/// </summary>
|
||||
/// <value>The localization path.</value>
|
||||
public string LocalizationPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(_configurationManager.ApplicationPaths.ProgramDataPath, "localization");
|
||||
}
|
||||
}
|
||||
public string LocalizationPath => Path.Combine(_configurationManager.ApplicationPaths.ProgramDataPath, "localization");
|
||||
|
||||
public string RemoveDiacritics(string text)
|
||||
{
|
||||
@@ -357,7 +351,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
{
|
||||
if (string.IsNullOrEmpty(rating))
|
||||
{
|
||||
throw new ArgumentNullException("rating");
|
||||
throw new ArgumentNullException(nameof(rating));
|
||||
}
|
||||
|
||||
if (_unratedValues.Contains(rating, StringComparer.OrdinalIgnoreCase))
|
||||
@@ -452,7 +446,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
{
|
||||
if (string.IsNullOrEmpty(culture))
|
||||
{
|
||||
throw new ArgumentNullException("culture");
|
||||
throw new ArgumentNullException(nameof(culture));
|
||||
}
|
||||
|
||||
const string prefix = "Core";
|
||||
@@ -465,7 +459,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
{
|
||||
if (string.IsNullOrEmpty(culture))
|
||||
{
|
||||
throw new ArgumentNullException("culture");
|
||||
throw new ArgumentNullException(nameof(culture));
|
||||
}
|
||||
|
||||
var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
@@ -494,7 +488,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
}
|
||||
}
|
||||
|
||||
private string GetResourceFilename(string culture)
|
||||
private static string GetResourceFilename(string culture)
|
||||
{
|
||||
var parts = culture.Split('-');
|
||||
|
||||
|
||||
@@ -12,13 +12,13 @@ namespace Emby.Server.Implementations.Localization
|
||||
{
|
||||
if (text == null)
|
||||
{
|
||||
throw new ArgumentNullException("text");
|
||||
throw new ArgumentNullException(nameof(text));
|
||||
}
|
||||
|
||||
var chars = Normalize(text, NormalizationForm.FormD)
|
||||
.Where(ch => CharUnicodeInfo.GetUnicodeCategory(ch) != UnicodeCategory.NonSpacingMark);
|
||||
|
||||
return Normalize(String.Concat(chars), NormalizationForm.FormC);
|
||||
return Normalize(string.Concat(chars), NormalizationForm.FormC);
|
||||
}
|
||||
|
||||
private static string Normalize(string text, NormalizationForm form, bool stripStringOnFailure = true)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Chapters;
|
||||
using MediaBrowser.Controller.Chapters;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
@@ -46,7 +46,7 @@ namespace Emby.Server.Implementations.MediaEncoder
|
||||
/// Gets the chapter images data path.
|
||||
/// </summary>
|
||||
/// <value>The chapter images data path.</value>
|
||||
private string GetChapterImagesPath(BaseItem item)
|
||||
private static string GetChapterImagesPath(BaseItem item)
|
||||
{
|
||||
return Path.Combine(item.GetInternalMetadataPath(), "chapters");
|
||||
}
|
||||
@@ -202,7 +202,7 @@ namespace Emby.Server.Implementations.MediaEncoder
|
||||
return Path.Combine(GetChapterImagesPath(video), filename);
|
||||
}
|
||||
|
||||
private List<string> GetSavedChapterImages(Video video, IDirectoryService directoryService)
|
||||
private static List<string> GetSavedChapterImages(Video video, IDirectoryService directoryService)
|
||||
{
|
||||
var path = GetChapterImagesPath(video);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
|
||||
namespace Emby.Server.Implementations.Net
|
||||
{
|
||||
@@ -16,15 +16,17 @@ namespace Emby.Server.Implementations.Net
|
||||
/// <param name="disposing">True if managed objects should be disposed, if false, only unmanaged resources should be released.</param>
|
||||
protected abstract void Dispose(bool disposing);
|
||||
|
||||
|
||||
//TODO Remove and reimplement using the IsDisposed property directly.
|
||||
/// <summary>
|
||||
/// Throws and <see cref="System.ObjectDisposedException"/> if the <see cref="IsDisposed"/> property is true.
|
||||
/// Throws an <see cref="System.ObjectDisposedException"/> if the <see cref="IsDisposed"/> property is true.
|
||||
/// </summary>
|
||||
/// <seealso cref="IsDisposed"/>
|
||||
/// <exception cref="System.ObjectDisposedException">Thrown if the <see cref="IsDisposed"/> property is true.</exception>
|
||||
/// <seealso cref="Dispose()"/>
|
||||
protected virtual void ThrowIfDisposed()
|
||||
{
|
||||
if (this.IsDisposed) throw new ObjectDisposedException(this.GetType().FullName);
|
||||
if (IsDisposed) throw new ObjectDisposedException(GetType().Name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Emby.Server.Implementations.Net
|
||||
{
|
||||
if (logger == null)
|
||||
{
|
||||
throw new ArgumentNullException("logger");
|
||||
throw new ArgumentNullException(nameof(logger));
|
||||
}
|
||||
|
||||
_logger = logger;
|
||||
@@ -31,7 +31,7 @@ namespace Emby.Server.Implementations.Net
|
||||
|
||||
public ISocket CreateTcpSocket(IpAddressInfo remoteAddress, int remotePort)
|
||||
{
|
||||
if (remotePort < 0) throw new ArgumentException("remotePort cannot be less than zero.", "remotePort");
|
||||
if (remotePort < 0) throw new ArgumentException("remotePort cannot be less than zero.", nameof(remotePort));
|
||||
|
||||
var addressFamily = remoteAddress.AddressFamily == IpAddressFamily.InterNetwork
|
||||
? AddressFamily.InterNetwork
|
||||
@@ -67,7 +67,7 @@ namespace Emby.Server.Implementations.Net
|
||||
/// <param name="localPort">An integer specifying the local port to bind the acceptSocket to.</param>
|
||||
public ISocket CreateUdpSocket(int localPort)
|
||||
{
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", "localPort");
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", nameof(localPort));
|
||||
|
||||
var retVal = new Socket(AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
||||
try
|
||||
@@ -86,7 +86,7 @@ namespace Emby.Server.Implementations.Net
|
||||
|
||||
public ISocket CreateUdpBroadcastSocket(int localPort)
|
||||
{
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", "localPort");
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", nameof(localPort));
|
||||
|
||||
var retVal = new Socket(AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
||||
try
|
||||
@@ -111,7 +111,7 @@ namespace Emby.Server.Implementations.Net
|
||||
/// <returns>An implementation of the <see cref="ISocket"/> interface used by RSSDP components to perform acceptSocket operations.</returns>
|
||||
public ISocket CreateSsdpUdpSocket(IpAddressInfo localIpAddress, int localPort)
|
||||
{
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", "localPort");
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", nameof(localPort));
|
||||
|
||||
var retVal = new Socket(AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
||||
try
|
||||
@@ -142,10 +142,10 @@ namespace Emby.Server.Implementations.Net
|
||||
/// <returns></returns>
|
||||
public ISocket CreateUdpMulticastSocket(string ipAddress, int multicastTimeToLive, int localPort)
|
||||
{
|
||||
if (ipAddress == null) throw new ArgumentNullException("ipAddress");
|
||||
if (ipAddress.Length == 0) throw new ArgumentException("ipAddress cannot be an empty string.", "ipAddress");
|
||||
if (multicastTimeToLive <= 0) throw new ArgumentException("multicastTimeToLive cannot be zero or less.", "multicastTimeToLive");
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", "localPort");
|
||||
if (ipAddress == null) throw new ArgumentNullException(nameof(ipAddress));
|
||||
if (ipAddress.Length == 0) throw new ArgumentException("ipAddress cannot be an empty string.", nameof(ipAddress));
|
||||
if (multicastTimeToLive <= 0) throw new ArgumentException("multicastTimeToLive cannot be zero or less.", nameof(multicastTimeToLive));
|
||||
if (localPort < 0) throw new ArgumentException("localPort cannot be less than zero.", nameof(localPort));
|
||||
|
||||
var retVal = new Socket(AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
|
||||
|
||||
@@ -212,26 +212,18 @@ namespace Emby.Server.Implementations.Net
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanRead
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public override bool CanSeek
|
||||
{
|
||||
get { return false; }
|
||||
}
|
||||
public override bool CanWrite
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public override long Length
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
public override bool CanRead => true;
|
||||
|
||||
public override bool CanSeek => false;
|
||||
|
||||
public override bool CanWrite => true;
|
||||
|
||||
public override long Length => throw new NotImplementedException();
|
||||
|
||||
public override long Position
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
set { throw new NotImplementedException(); }
|
||||
get => throw new NotImplementedException();
|
||||
set => throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void Write(byte[] buffer, int offset, int count)
|
||||
|
||||
@@ -16,10 +16,7 @@ namespace Emby.Server.Implementations.Net
|
||||
private Socket _Socket;
|
||||
private int _LocalPort;
|
||||
|
||||
public Socket Socket
|
||||
{
|
||||
get { return _Socket; }
|
||||
}
|
||||
public Socket Socket => _Socket;
|
||||
|
||||
private readonly SocketAsyncEventArgs _receiveSocketAsyncEventArgs = new SocketAsyncEventArgs()
|
||||
{
|
||||
@@ -36,7 +33,7 @@ namespace Emby.Server.Implementations.Net
|
||||
|
||||
public UdpSocket(Socket socket, int localPort, IPAddress ip)
|
||||
{
|
||||
if (socket == null) throw new ArgumentNullException("socket");
|
||||
if (socket == null) throw new ArgumentNullException(nameof(socket));
|
||||
|
||||
_Socket = socket;
|
||||
_LocalPort = localPort;
|
||||
@@ -102,7 +99,7 @@ namespace Emby.Server.Implementations.Net
|
||||
|
||||
public UdpSocket(Socket socket, IpEndPointInfo endPoint)
|
||||
{
|
||||
if (socket == null) throw new ArgumentNullException("socket");
|
||||
if (socket == null) throw new ArgumentNullException(nameof(socket));
|
||||
|
||||
_Socket = socket;
|
||||
_Socket.Connect(NetworkManager.ToIPEndPoint(endPoint));
|
||||
|
||||
@@ -19,13 +19,7 @@ namespace System.Net
|
||||
|
||||
#region Count, Array, Enumerator
|
||||
|
||||
public BigInteger Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._ipnetwork.Total;
|
||||
}
|
||||
}
|
||||
public BigInteger Count => this._ipnetwork.Total;
|
||||
|
||||
public IPAddress this[BigInteger i]
|
||||
{
|
||||
@@ -33,7 +27,7 @@ namespace System.Net
|
||||
{
|
||||
if (i >= this.Count)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("i");
|
||||
throw new ArgumentOutOfRangeException(nameof(i));
|
||||
}
|
||||
byte width = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128;
|
||||
IPNetworkCollection ipn = this._ipnetwork.Subnet(width);
|
||||
@@ -57,10 +51,7 @@ namespace System.Net
|
||||
|
||||
#region IEnumerator<IPNetwork> Members
|
||||
|
||||
public IPAddress Current
|
||||
{
|
||||
get { return this[this._enumerator]; }
|
||||
}
|
||||
public IPAddress Current => this[this._enumerator];
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -76,10 +67,7 @@ namespace System.Net
|
||||
|
||||
#region IEnumerator Members
|
||||
|
||||
object IEnumerator.Current
|
||||
{
|
||||
get { return this.Current; }
|
||||
}
|
||||
object IEnumerator.Current => this.Current;
|
||||
|
||||
public bool MoveNext()
|
||||
{
|
||||
|
||||
@@ -41,44 +41,19 @@ namespace System.Net
|
||||
/// <summary>
|
||||
/// Network address
|
||||
/// </summary>
|
||||
public IPAddress Network
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
return IPNetwork.ToIPAddress(this._network, this._family);
|
||||
}
|
||||
}
|
||||
public IPAddress Network => IPNetwork.ToIPAddress(this._network, this._family);
|
||||
|
||||
/// <summary>
|
||||
/// Address Family
|
||||
/// </summary>
|
||||
public AddressFamily AddressFamily
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._family;
|
||||
}
|
||||
}
|
||||
public AddressFamily AddressFamily => this._family;
|
||||
|
||||
private BigInteger _netmask
|
||||
{
|
||||
get
|
||||
{
|
||||
return IPNetwork.ToUint(this._cidr, this._family);
|
||||
}
|
||||
}
|
||||
private BigInteger _netmask => IPNetwork.ToUint(this._cidr, this._family);
|
||||
|
||||
/// <summary>
|
||||
/// Netmask
|
||||
/// </summary>
|
||||
public IPAddress Netmask
|
||||
{
|
||||
get
|
||||
{
|
||||
return IPNetwork.ToIPAddress(this._netmask, this._family);
|
||||
}
|
||||
}
|
||||
public IPAddress Netmask => IPNetwork.ToIPAddress(this._netmask, this._family);
|
||||
|
||||
private BigInteger _broadcast
|
||||
{
|
||||
@@ -171,13 +146,7 @@ namespace System.Net
|
||||
/// <summary>
|
||||
/// The CIDR netmask notation
|
||||
/// </summary>
|
||||
public byte Cidr
|
||||
{
|
||||
get
|
||||
{
|
||||
return this._cidr;
|
||||
}
|
||||
}
|
||||
public byte Cidr => this._cidr;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -195,7 +164,7 @@ namespace System.Net
|
||||
int maxCidr = family == Sockets.AddressFamily.InterNetwork ? 32 : 128;
|
||||
if (cidr > maxCidr)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("cidr");
|
||||
throw new ArgumentOutOfRangeException(nameof(cidr));
|
||||
}
|
||||
|
||||
this._ipaddress = ipaddress;
|
||||
@@ -427,7 +396,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("ipaddress");
|
||||
throw new ArgumentNullException(nameof(ipaddress));
|
||||
}
|
||||
ipnetwork = null;
|
||||
return;
|
||||
@@ -437,7 +406,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("netmask");
|
||||
throw new ArgumentNullException(nameof(netmask));
|
||||
}
|
||||
ipnetwork = null;
|
||||
return;
|
||||
@@ -477,7 +446,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("network");
|
||||
throw new ArgumentNullException(nameof(network));
|
||||
}
|
||||
ipnetwork = null;
|
||||
return;
|
||||
@@ -538,7 +507,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("ipaddress");
|
||||
throw new ArgumentNullException(nameof(ipaddress));
|
||||
}
|
||||
ipnetwork = null;
|
||||
return;
|
||||
@@ -548,7 +517,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("netmask");
|
||||
throw new ArgumentNullException(nameof(netmask));
|
||||
}
|
||||
ipnetwork = null;
|
||||
return;
|
||||
@@ -596,7 +565,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("ipaddress");
|
||||
throw new ArgumentNullException(nameof(ipaddress));
|
||||
}
|
||||
ipnetwork = null;
|
||||
return;
|
||||
@@ -680,7 +649,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("ipaddress");
|
||||
throw new ArgumentNullException(nameof(ipaddress));
|
||||
}
|
||||
uintIpAddress = null;
|
||||
return;
|
||||
@@ -751,7 +720,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("cidr");
|
||||
throw new ArgumentOutOfRangeException(nameof(cidr));
|
||||
}
|
||||
uintNetmask = null;
|
||||
return;
|
||||
@@ -761,7 +730,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("cidr");
|
||||
throw new ArgumentOutOfRangeException(nameof(cidr));
|
||||
}
|
||||
uintNetmask = null;
|
||||
return;
|
||||
@@ -872,7 +841,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentNullException("netmask");
|
||||
throw new ArgumentNullException(nameof(netmask));
|
||||
}
|
||||
cidr = null;
|
||||
return;
|
||||
@@ -976,7 +945,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryParse == false)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("cidr");
|
||||
throw new ArgumentOutOfRangeException(nameof(cidr));
|
||||
}
|
||||
netmask = null;
|
||||
return;
|
||||
@@ -1042,7 +1011,7 @@ namespace System.Net
|
||||
|
||||
if (netmask == null)
|
||||
{
|
||||
throw new ArgumentNullException("netmask");
|
||||
throw new ArgumentNullException(nameof(netmask));
|
||||
}
|
||||
BigInteger uintNetmask = IPNetwork.ToBigInteger(netmask);
|
||||
bool valid = IPNetwork.InternalValidNetmask(uintNetmask, netmask.AddressFamily);
|
||||
@@ -1145,7 +1114,7 @@ namespace System.Net
|
||||
|
||||
if (ipaddress == null)
|
||||
{
|
||||
throw new ArgumentNullException("ipaddress");
|
||||
throw new ArgumentNullException(nameof(ipaddress));
|
||||
}
|
||||
|
||||
if (AddressFamily != ipaddress.AddressFamily)
|
||||
@@ -1174,7 +1143,7 @@ namespace System.Net
|
||||
|
||||
if (network2 == null)
|
||||
{
|
||||
throw new ArgumentNullException("network2");
|
||||
throw new ArgumentNullException(nameof(network2));
|
||||
}
|
||||
|
||||
BigInteger uintNetwork = _network;
|
||||
@@ -1203,7 +1172,7 @@ namespace System.Net
|
||||
|
||||
if (network2 == null)
|
||||
{
|
||||
throw new ArgumentNullException("network2");
|
||||
throw new ArgumentNullException(nameof(network2));
|
||||
}
|
||||
|
||||
BigInteger uintNetwork = _network;
|
||||
@@ -1242,37 +1211,19 @@ namespace System.Net
|
||||
/// 10.0.0.0/8
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IPNetwork IANA_ABLK_RESERVED1
|
||||
{
|
||||
get
|
||||
{
|
||||
return _iana_ablock_reserved.Value;
|
||||
}
|
||||
}
|
||||
public static IPNetwork IANA_ABLK_RESERVED1 => _iana_ablock_reserved.Value;
|
||||
|
||||
/// <summary>
|
||||
/// 172.12.0.0/12
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IPNetwork IANA_BBLK_RESERVED1
|
||||
{
|
||||
get
|
||||
{
|
||||
return _iana_bblock_reserved.Value;
|
||||
}
|
||||
}
|
||||
public static IPNetwork IANA_BBLK_RESERVED1 => _iana_bblock_reserved.Value;
|
||||
|
||||
/// <summary>
|
||||
/// 192.168.0.0/16
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IPNetwork IANA_CBLK_RESERVED1
|
||||
{
|
||||
get
|
||||
{
|
||||
return _iana_cblock_reserved.Value;
|
||||
}
|
||||
}
|
||||
public static IPNetwork IANA_CBLK_RESERVED1 => _iana_cblock_reserved.Value;
|
||||
|
||||
/// <summary>
|
||||
/// return true if ipaddress is contained in
|
||||
@@ -1285,7 +1236,7 @@ namespace System.Net
|
||||
|
||||
if (ipaddress == null)
|
||||
{
|
||||
throw new ArgumentNullException("ipaddress");
|
||||
throw new ArgumentNullException(nameof(ipaddress));
|
||||
}
|
||||
|
||||
return IPNetwork.IANA_ABLK_RESERVED1.Contains(ipaddress)
|
||||
@@ -1356,7 +1307,7 @@ namespace System.Net
|
||||
{
|
||||
if (trySubnet == false)
|
||||
{
|
||||
throw new ArgumentNullException("network");
|
||||
throw new ArgumentNullException(nameof(network));
|
||||
}
|
||||
ipnetworkCollection = null;
|
||||
return;
|
||||
@@ -1367,7 +1318,7 @@ namespace System.Net
|
||||
{
|
||||
if (trySubnet == false)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("cidr");
|
||||
throw new ArgumentOutOfRangeException(nameof(cidr));
|
||||
}
|
||||
ipnetworkCollection = null;
|
||||
return;
|
||||
@@ -1438,7 +1389,7 @@ namespace System.Net
|
||||
{
|
||||
if (trySupernet == false)
|
||||
{
|
||||
throw new ArgumentNullException("network1");
|
||||
throw new ArgumentNullException(nameof(network1));
|
||||
}
|
||||
supernet = null;
|
||||
return;
|
||||
@@ -1448,7 +1399,7 @@ namespace System.Net
|
||||
{
|
||||
if (trySupernet == false)
|
||||
{
|
||||
throw new ArgumentNullException("network2");
|
||||
throw new ArgumentNullException(nameof(network2));
|
||||
}
|
||||
supernet = null;
|
||||
return;
|
||||
@@ -1492,7 +1443,7 @@ namespace System.Net
|
||||
{
|
||||
if (trySupernet == false)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("network");
|
||||
throw new ArgumentOutOfRangeException(nameof(trySupernet), "TrySupernet was false while the first and last networks are not adjacent.");
|
||||
}
|
||||
supernet = null;
|
||||
return;
|
||||
@@ -1536,8 +1487,7 @@ namespace System.Net
|
||||
/// 192.168.0.0/24 + 192.168.1.0/24 = 192.168.0.0/23
|
||||
/// 192.168.0.0/24 + 192.168.1.0/24 + 192.168.2.0/24 + 192.168.3.0/24 = 192.168.0.0/22
|
||||
/// </summary>
|
||||
/// <param name="ipnetworks"></param>
|
||||
/// <param name="supernet"></param>
|
||||
/// <param name="ipnetworks">The IP networks</param>
|
||||
/// <returns></returns>
|
||||
public static IPNetwork[] Supernet(IPNetwork[] ipnetworks)
|
||||
{
|
||||
@@ -1573,7 +1523,7 @@ namespace System.Net
|
||||
{
|
||||
if (trySupernet == false)
|
||||
{
|
||||
throw new ArgumentNullException("ipnetworks");
|
||||
throw new ArgumentNullException(nameof(ipnetworks));
|
||||
}
|
||||
supernet = null;
|
||||
return false;
|
||||
@@ -1684,12 +1634,12 @@ namespace System.Net
|
||||
|
||||
if (string.IsNullOrEmpty(start))
|
||||
{
|
||||
throw new ArgumentNullException("start");
|
||||
throw new ArgumentNullException(nameof(start));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(end))
|
||||
{
|
||||
throw new ArgumentNullException("end");
|
||||
throw new ArgumentNullException(nameof(end));
|
||||
}
|
||||
|
||||
IPAddress startIP;
|
||||
@@ -1750,7 +1700,7 @@ namespace System.Net
|
||||
{
|
||||
if (tryWide == false)
|
||||
{
|
||||
throw new ArgumentNullException("ipnetworks");
|
||||
throw new ArgumentNullException(nameof(ipnetworks));
|
||||
}
|
||||
ipnetwork = null;
|
||||
return;
|
||||
@@ -1973,7 +1923,7 @@ namespace System.Net
|
||||
|
||||
#region IComparable<IPNetwork> Members
|
||||
|
||||
public static Int32 Compare(IPNetwork left, IPNetwork right)
|
||||
public static int Compare(IPNetwork left, IPNetwork right)
|
||||
{
|
||||
// two null IPNetworks are equal
|
||||
if (ReferenceEquals(left, null) && ReferenceEquals(right, null)) return 0;
|
||||
@@ -1994,12 +1944,12 @@ namespace System.Net
|
||||
return result;
|
||||
}
|
||||
|
||||
public Int32 CompareTo(IPNetwork other)
|
||||
public int CompareTo(IPNetwork other)
|
||||
{
|
||||
return Compare(this, other);
|
||||
}
|
||||
|
||||
public Int32 CompareTo(Object obj)
|
||||
public int CompareTo(object obj)
|
||||
{
|
||||
// null is at less
|
||||
if (obj == null) return 1;
|
||||
@@ -2012,7 +1962,7 @@ namespace System.Net
|
||||
{
|
||||
throw new ArgumentException(
|
||||
"The supplied parameter is an invalid type. Please supply an IPNetwork type.",
|
||||
"obj");
|
||||
nameof(obj));
|
||||
}
|
||||
|
||||
// perform the comparision
|
||||
@@ -2023,17 +1973,17 @@ namespace System.Net
|
||||
|
||||
#region IEquatable<IPNetwork> Members
|
||||
|
||||
public static Boolean Equals(IPNetwork left, IPNetwork right)
|
||||
public static bool Equals(IPNetwork left, IPNetwork right)
|
||||
{
|
||||
return Compare(left, right) == 0;
|
||||
}
|
||||
|
||||
public Boolean Equals(IPNetwork other)
|
||||
public bool Equals(IPNetwork other)
|
||||
{
|
||||
return Equals(this, other);
|
||||
}
|
||||
|
||||
public override Boolean Equals(Object obj)
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return Equals(this, obj as IPNetwork);
|
||||
}
|
||||
@@ -2042,22 +1992,22 @@ namespace System.Net
|
||||
|
||||
#region Operators
|
||||
|
||||
public static Boolean operator ==(IPNetwork left, IPNetwork right)
|
||||
public static bool operator ==(IPNetwork left, IPNetwork right)
|
||||
{
|
||||
return Equals(left, right);
|
||||
}
|
||||
|
||||
public static Boolean operator !=(IPNetwork left, IPNetwork right)
|
||||
public static bool operator !=(IPNetwork left, IPNetwork right)
|
||||
{
|
||||
return !Equals(left, right);
|
||||
}
|
||||
|
||||
public static Boolean operator <(IPNetwork left, IPNetwork right)
|
||||
public static bool operator <(IPNetwork left, IPNetwork right)
|
||||
{
|
||||
return Compare(left, right) < 0;
|
||||
}
|
||||
|
||||
public static Boolean operator >(IPNetwork left, IPNetwork right)
|
||||
public static bool operator >(IPNetwork left, IPNetwork right)
|
||||
{
|
||||
return Compare(left, right) > 0;
|
||||
}
|
||||
|
||||
@@ -11,22 +11,12 @@ namespace System.Net
|
||||
private byte _cidrSubnet;
|
||||
private IPNetwork _ipnetwork;
|
||||
|
||||
private byte _cidr
|
||||
{
|
||||
get { return this._ipnetwork.Cidr; }
|
||||
}
|
||||
private BigInteger _broadcast
|
||||
{
|
||||
get { return IPNetwork.ToBigInteger(this._ipnetwork.Broadcast); }
|
||||
}
|
||||
private BigInteger _lastUsable
|
||||
{
|
||||
get { return IPNetwork.ToBigInteger(this._ipnetwork.LastUsable); }
|
||||
}
|
||||
private BigInteger _network
|
||||
{
|
||||
get { return IPNetwork.ToBigInteger(this._ipnetwork.Network); }
|
||||
}
|
||||
private byte _cidr => this._ipnetwork.Cidr;
|
||||
|
||||
private BigInteger _broadcast => IPNetwork.ToBigInteger(this._ipnetwork.Broadcast);
|
||||
|
||||
private BigInteger _lastUsable => IPNetwork.ToBigInteger(this._ipnetwork.LastUsable);
|
||||
private BigInteger _network => IPNetwork.ToBigInteger(this._ipnetwork.Network);
|
||||
#if TRAVISCI
|
||||
public
|
||||
#else
|
||||
@@ -38,7 +28,7 @@ namespace System.Net
|
||||
int maxCidr = ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? 32 : 128;
|
||||
if (cidrSubnet > maxCidr)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("cidrSubnet");
|
||||
throw new ArgumentOutOfRangeException(nameof(cidrSubnet));
|
||||
}
|
||||
|
||||
if (cidrSubnet < ipnetwork.Cidr)
|
||||
@@ -68,7 +58,7 @@ namespace System.Net
|
||||
{
|
||||
if (i >= this.Count)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("i");
|
||||
throw new ArgumentOutOfRangeException(nameof(i));
|
||||
}
|
||||
|
||||
BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6
|
||||
@@ -96,10 +86,7 @@ namespace System.Net
|
||||
|
||||
#region IEnumerator<IPNetwork> Members
|
||||
|
||||
public IPNetwork Current
|
||||
{
|
||||
get { return this[this._enumerator]; }
|
||||
}
|
||||
public IPNetwork Current => this[this._enumerator];
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -115,10 +102,7 @@ namespace System.Net
|
||||
|
||||
#region IEnumerator Members
|
||||
|
||||
object IEnumerator.Current
|
||||
{
|
||||
get { return this.Current; }
|
||||
}
|
||||
object IEnumerator.Current => this.Current;
|
||||
|
||||
public bool MoveNext()
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
@@ -114,7 +114,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
.ToList();
|
||||
}
|
||||
|
||||
private bool FilterIpAddress(IPAddress address)
|
||||
private static bool FilterIpAddress(IPAddress address)
|
||||
{
|
||||
var addressString = address.ToString();
|
||||
|
||||
@@ -228,7 +228,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
subnet_Test++;
|
||||
}
|
||||
|
||||
var subnet_Match = String.Join(".", unicastIPAddressInformation.Address.ToString().Split('.').Take(subnet_Test).ToArray());
|
||||
var subnet_Match = string.Join(".", unicastIPAddressInformation.Address.ToString().Split('.').Take(subnet_Test).ToArray());
|
||||
|
||||
// TODO: Is this check necessary?
|
||||
if (adapter.OperationalStatus == OperationalStatus.Up)
|
||||
@@ -245,7 +245,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
}
|
||||
}
|
||||
|
||||
private bool Is172AddressPrivate(string endpoint)
|
||||
private static bool Is172AddressPrivate(string endpoint)
|
||||
{
|
||||
for (var i = 16; i <= 31; i++)
|
||||
{
|
||||
@@ -268,7 +268,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
return IsAddressInSubnets(IPAddress.Parse(addressString), addressString, subnets);
|
||||
}
|
||||
|
||||
private bool IsAddressInSubnets(IPAddress address, string addressString, string[] subnets)
|
||||
private static bool IsAddressInSubnets(IPAddress address, string addressString, string[] subnets)
|
||||
{
|
||||
foreach (var subnet in subnets)
|
||||
{
|
||||
@@ -296,7 +296,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
{
|
||||
if (string.IsNullOrEmpty(endpoint))
|
||||
{
|
||||
throw new ArgumentNullException("endpoint");
|
||||
throw new ArgumentNullException(nameof(endpoint));
|
||||
}
|
||||
|
||||
IPAddress address;
|
||||
@@ -380,7 +380,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
return false;
|
||||
}
|
||||
|
||||
private Task<IPAddress[]> GetIpAddresses(string hostName)
|
||||
private static Task<IPAddress[]> GetIpAddresses(string hostName)
|
||||
{
|
||||
return Dns.GetHostAddressesAsync(hostName);
|
||||
}
|
||||
@@ -436,7 +436,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
.ToList();
|
||||
}
|
||||
|
||||
private async Task<IEnumerable<IPAddress>> GetLocalIpAddressesFallback()
|
||||
private static async Task<IEnumerable<IPAddress>> GetLocalIpAddressesFallback()
|
||||
{
|
||||
var host = await Dns.GetHostEntryAsync(Dns.GetHostName()).ConfigureAwait(false);
|
||||
|
||||
@@ -480,7 +480,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
return _macAddresses;
|
||||
}
|
||||
|
||||
private List<string> GetMacAddressesInternal()
|
||||
private static List<string> GetMacAddressesInternal()
|
||||
{
|
||||
return NetworkInterface.GetAllNetworkInterfaces()
|
||||
.Where(i => i.NetworkInterfaceType != NetworkInterfaceType.Loopback)
|
||||
@@ -497,8 +497,9 @@ namespace Emby.Server.Implementations.Networking
|
||||
|
||||
return physicalAddress.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
//TODO Log exception.
|
||||
return null;
|
||||
}
|
||||
})
|
||||
@@ -526,7 +527,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
/// <exception cref="System.FormatException"></exception>
|
||||
private static async Task<IPEndPoint> Parse(string endpointstring, int defaultport)
|
||||
{
|
||||
if (String.IsNullOrEmpty(endpointstring)
|
||||
if (string.IsNullOrEmpty(endpointstring)
|
||||
|| endpointstring.Trim().Length == 0)
|
||||
{
|
||||
throw new ArgumentException("Endpoint descriptor may not be empty.");
|
||||
@@ -536,7 +537,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
(defaultport < IPEndPoint.MinPort
|
||||
|| defaultport > IPEndPoint.MaxPort))
|
||||
{
|
||||
throw new ArgumentException(String.Format("Invalid default port '{0}'", defaultport));
|
||||
throw new ArgumentException(string.Format("Invalid default port '{0}'", defaultport));
|
||||
}
|
||||
|
||||
string[] values = endpointstring.Split(new char[] { ':' });
|
||||
@@ -557,7 +558,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
//could [a:b:c]:d
|
||||
if (values[0].StartsWith("[") && values[values.Length - 2].EndsWith("]"))
|
||||
{
|
||||
string ipaddressstring = String.Join(":", values.Take(values.Length - 1).ToArray());
|
||||
string ipaddressstring = string.Join(":", values.Take(values.Length - 1).ToArray());
|
||||
ipaddy = IPAddress.Parse(ipaddressstring);
|
||||
port = GetPort(values[values.Length - 1]);
|
||||
}
|
||||
@@ -569,11 +570,11 @@ namespace Emby.Server.Implementations.Networking
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new FormatException(String.Format("Invalid endpoint ipaddress '{0}'", endpointstring));
|
||||
throw new FormatException(string.Format("Invalid endpoint ipaddress '{0}'", endpointstring));
|
||||
}
|
||||
|
||||
if (port == -1)
|
||||
throw new ArgumentException(String.Format("No port specified: '{0}'", endpointstring));
|
||||
throw new ArgumentException(string.Format("No port specified: '{0}'", endpointstring));
|
||||
|
||||
return new IPEndPoint(ipaddy, port);
|
||||
}
|
||||
@@ -590,11 +591,11 @@ namespace Emby.Server.Implementations.Networking
|
||||
{
|
||||
int port;
|
||||
|
||||
if (!Int32.TryParse(p, out port)
|
||||
if (!int.TryParse(p, out port)
|
||||
|| port < IPEndPoint.MinPort
|
||||
|| port > IPEndPoint.MaxPort)
|
||||
{
|
||||
throw new FormatException(String.Format("Invalid end point port '{0}'", p));
|
||||
throw new FormatException(string.Format("Invalid end point port '{0}'", p));
|
||||
}
|
||||
|
||||
return port;
|
||||
@@ -611,7 +612,7 @@ namespace Emby.Server.Implementations.Networking
|
||||
var hosts = await Dns.GetHostAddressesAsync(p).ConfigureAwait(false);
|
||||
|
||||
if (hosts == null || hosts.Length == 0)
|
||||
throw new ArgumentException(String.Format("Host not found: {0}", p));
|
||||
throw new ArgumentException(string.Format("Host not found: {0}", p));
|
||||
|
||||
return hosts[0];
|
||||
}
|
||||
|
||||
@@ -25,28 +25,13 @@ namespace Emby.Server.Implementations.Playlists
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool IsHidden
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool IsHidden => true;
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override bool SupportsInheritedParentImages
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public override bool SupportsInheritedParentImages => false;
|
||||
|
||||
[IgnoreDataMember]
|
||||
public override string CollectionType
|
||||
{
|
||||
get { return MediaBrowser.Model.Entities.CollectionType.Playlists; }
|
||||
}
|
||||
public override string CollectionType => MediaBrowser.Model.Entities.CollectionType.Playlists;
|
||||
|
||||
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Playlists;
|
||||
@@ -455,10 +455,17 @@ namespace Emby.Server.Implementations.Playlists
|
||||
return MakeRelativePath(_fileSystem.GetDirectoryName(playlistPath), itemPath);
|
||||
}
|
||||
|
||||
private static String MakeRelativePath(string folderPath, string fileAbsolutePath)
|
||||
private static string MakeRelativePath(string folderPath, string fileAbsolutePath)
|
||||
{
|
||||
if (String.IsNullOrEmpty(folderPath)) throw new ArgumentNullException("folderPath");
|
||||
if (String.IsNullOrEmpty(fileAbsolutePath)) throw new ArgumentNullException("filePath");
|
||||
if (string.IsNullOrEmpty(folderPath))
|
||||
{
|
||||
throw new ArgumentException("Folder path was null or empty.", nameof(folderPath));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(fileAbsolutePath))
|
||||
{
|
||||
throw new ArgumentException("File absolute path was null or empty.", nameof(fileAbsolutePath));
|
||||
}
|
||||
|
||||
if (!folderPath.EndsWith(Path.DirectorySeparatorChar.ToString()))
|
||||
{
|
||||
@@ -471,7 +478,7 @@ namespace Emby.Server.Implementations.Playlists
|
||||
if (folderUri.Scheme != fileAbsoluteUri.Scheme) { return fileAbsolutePath; } // path can't be made relative.
|
||||
|
||||
Uri relativeUri = folderUri.MakeRelativeUri(fileAbsoluteUri);
|
||||
String relativePath = Uri.UnescapeDataString(relativeUri.ToString());
|
||||
string relativePath = Uri.UnescapeDataString(relativeUri.ToString());
|
||||
|
||||
if (fileAbsoluteUri.Scheme.Equals("file", StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System.Resources;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Resources;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -9,20 +8,14 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyTitle("Emby.Server.Implementations")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Emby.Server.Implementations")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyCompany("Jellyfin Project")]
|
||||
[assembly: AssemblyProduct("Jellyfin: The Free Software Media System")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2019 Jellyfin Contributors. Code released under the GNU General Public License Version 2")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: NeutralResourcesLanguage("en")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
@@ -70,10 +70,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
};
|
||||
}
|
||||
|
||||
public string Key
|
||||
{
|
||||
get { return "RefreshChapterImages"; }
|
||||
}
|
||||
public string Key => "RefreshChapterImages";
|
||||
|
||||
/// <summary>
|
||||
/// Returns the task to be executed
|
||||
@@ -156,6 +153,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
//TODO Investigate and properly fix.
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -165,33 +163,18 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
/// Gets the name of the task
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Chapter image extraction";
|
||||
}
|
||||
}
|
||||
public string Name => "Chapter image extraction";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the description.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description
|
||||
{
|
||||
get { return "Creates thumbnails for videos that have chapters."; }
|
||||
}
|
||||
public string Description => "Creates thumbnails for videos that have chapters.";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the category.
|
||||
/// </summary>
|
||||
/// <value>The category.</value>
|
||||
public string Category
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Library";
|
||||
}
|
||||
}
|
||||
public string Category => "Library";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
@@ -24,6 +24,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
/// Initializes a new instance of the <see cref="PeopleValidationTask" /> class.
|
||||
/// </summary>
|
||||
/// <param name="libraryManager">The library manager.</param>
|
||||
/// <param name="appHost">The server application host</param>
|
||||
public PeopleValidationTask(ILibraryManager libraryManager, IServerApplicationHost appHost)
|
||||
{
|
||||
_libraryManager = libraryManager;
|
||||
@@ -46,10 +47,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
};
|
||||
}
|
||||
|
||||
public string Key
|
||||
{
|
||||
get { return "RefreshPeople"; }
|
||||
}
|
||||
public string Key => "RefreshPeople";
|
||||
|
||||
/// <summary>
|
||||
/// Returns the task to be executed
|
||||
@@ -66,30 +64,18 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
/// Gets the name of the task
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get { return "Refresh people"; }
|
||||
}
|
||||
public string Name => "Refresh people";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the description.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description
|
||||
{
|
||||
get { return "Updates metadata for actors and directors in your media library."; }
|
||||
}
|
||||
public string Description => "Updates metadata for actors and directors in your media library.";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the category.
|
||||
/// </summary>
|
||||
/// <value>The category.</value>
|
||||
public string Category
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Library";
|
||||
}
|
||||
}
|
||||
public string Category => "Library";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,35 +62,20 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
/// Gets the name.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get { return "Scan media library"; }
|
||||
}
|
||||
public string Name => "Scan media library";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the description.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description
|
||||
{
|
||||
get { return "Scans your media library and refreshes metatata based on configuration."; }
|
||||
}
|
||||
public string Description => "Scans your media library and refreshes metatata based on configuration.";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the category.
|
||||
/// </summary>
|
||||
/// <value>The category.</value>
|
||||
public string Category
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Library";
|
||||
}
|
||||
}
|
||||
public string Category => "Library";
|
||||
|
||||
public string Key
|
||||
{
|
||||
get { return "RefreshLibrary"; }
|
||||
}
|
||||
public string Key => "RefreshLibrary";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@@ -78,23 +78,23 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
if (scheduledTask == null)
|
||||
{
|
||||
throw new ArgumentNullException("scheduledTask");
|
||||
throw new ArgumentNullException(nameof(scheduledTask));
|
||||
}
|
||||
if (applicationPaths == null)
|
||||
{
|
||||
throw new ArgumentNullException("applicationPaths");
|
||||
throw new ArgumentNullException(nameof(applicationPaths));
|
||||
}
|
||||
if (taskManager == null)
|
||||
{
|
||||
throw new ArgumentNullException("taskManager");
|
||||
throw new ArgumentNullException(nameof(taskManager));
|
||||
}
|
||||
if (jsonSerializer == null)
|
||||
{
|
||||
throw new ArgumentNullException("jsonSerializer");
|
||||
throw new ArgumentNullException(nameof(jsonSerializer));
|
||||
}
|
||||
if (logger == null)
|
||||
{
|
||||
throw new ArgumentNullException("logger");
|
||||
throw new ArgumentNullException(nameof(logger));
|
||||
}
|
||||
|
||||
ScheduledTask = scheduledTask;
|
||||
@@ -171,28 +171,19 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
/// Gets the name.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get { return ScheduledTask.Name; }
|
||||
}
|
||||
public string Name => ScheduledTask.Name;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the description.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description
|
||||
{
|
||||
get { return ScheduledTask.Description; }
|
||||
}
|
||||
public string Description => ScheduledTask.Description;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the category.
|
||||
/// </summary>
|
||||
/// <value>The category.</value>
|
||||
public string Category
|
||||
{
|
||||
get { return ScheduledTask.Category; }
|
||||
}
|
||||
public string Category => ScheduledTask.Category;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current cancellation token
|
||||
@@ -241,15 +232,12 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
/// <value>The triggers.</value>
|
||||
private Tuple<TaskTriggerInfo, ITaskTrigger>[] InternalTriggers
|
||||
{
|
||||
get
|
||||
{
|
||||
return _triggers;
|
||||
}
|
||||
get => _triggers;
|
||||
set
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException("value");
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
// Cleanup current triggers
|
||||
@@ -280,7 +268,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException("value");
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
// This null check is not great, but is needed to handle bad user input, or user mucking with the config file incorrectly
|
||||
@@ -730,7 +718,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
if (!info.TimeOfDayTicks.HasValue)
|
||||
{
|
||||
throw new ArgumentNullException();
|
||||
throw new ArgumentException("Info did not contain a TimeOfDayTicks.",nameof(info));
|
||||
}
|
||||
|
||||
return new DailyTrigger
|
||||
@@ -744,12 +732,12 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
if (!info.TimeOfDayTicks.HasValue)
|
||||
{
|
||||
throw new ArgumentNullException();
|
||||
throw new ArgumentException("Info did not contain a TimeOfDayTicks.", nameof(info));
|
||||
}
|
||||
|
||||
if (!info.DayOfWeek.HasValue)
|
||||
{
|
||||
throw new ArgumentNullException();
|
||||
throw new ArgumentException("Info did not contain a DayOfWeek.", nameof(info));
|
||||
}
|
||||
|
||||
return new WeeklyTrigger
|
||||
@@ -764,7 +752,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
if (!info.IntervalTicks.HasValue)
|
||||
{
|
||||
throw new ArgumentNullException();
|
||||
throw new ArgumentException("Info did not contain a IntervalTicks.", nameof(info));
|
||||
}
|
||||
|
||||
return new IntervalTrigger
|
||||
@@ -778,7 +766,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
if (!info.SystemEvent.HasValue)
|
||||
{
|
||||
throw new ArgumentNullException();
|
||||
throw new ArgumentException("Info did not contain a SystemEvent.", nameof(info));
|
||||
}
|
||||
|
||||
return new SystemEventTrigger(_systemEvents)
|
||||
|
||||
@@ -162,54 +162,30 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// Gets the name of the task
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get { return "Cache file cleanup"; }
|
||||
}
|
||||
public string Name => "Cache file cleanup";
|
||||
|
||||
public string Key
|
||||
{
|
||||
get { return "DeleteCacheFiles"; }
|
||||
}
|
||||
public string Key => "DeleteCacheFiles";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the description.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description
|
||||
{
|
||||
get { return "Deletes cache files no longer needed by the system"; }
|
||||
}
|
||||
public string Description => "Deletes cache files no longer needed by the system";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the category.
|
||||
/// </summary>
|
||||
/// <value>The category.</value>
|
||||
public string Category
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Maintenance";
|
||||
}
|
||||
}
|
||||
public string Category => "Maintenance";
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this instance is hidden.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance is hidden; otherwise, <c>false</c>.</value>
|
||||
public bool IsHidden
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsHidden => true;
|
||||
|
||||
public bool IsEnabled
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsEnabled => true;
|
||||
|
||||
public bool IsLogged
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsLogged => true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,58 +81,34 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public string Key
|
||||
{
|
||||
get { return "CleanLogFiles"; }
|
||||
}
|
||||
public string Key => "CleanLogFiles";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the name of the task
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name
|
||||
{
|
||||
get { return "Log file cleanup"; }
|
||||
}
|
||||
public string Name => "Log file cleanup";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the description.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description
|
||||
{
|
||||
get { return string.Format("Deletes log files that are more than {0} days old.", ConfigurationManager.CommonConfiguration.LogFileRetentionDays); }
|
||||
}
|
||||
public string Description => string.Format("Deletes log files that are more than {0} days old.", ConfigurationManager.CommonConfiguration.LogFileRetentionDays);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the category.
|
||||
/// </summary>
|
||||
/// <value>The category.</value>
|
||||
public string Category
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Maintenance";
|
||||
}
|
||||
}
|
||||
public string Category => "Maintenance";
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this instance is hidden.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if this instance is hidden; otherwise, <c>false</c>.</value>
|
||||
public bool IsHidden
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsHidden => true;
|
||||
|
||||
public bool IsEnabled
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsEnabled => true;
|
||||
|
||||
public bool IsLogged
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
public bool IsLogged => true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
@@ -91,7 +91,7 @@ namespace Emby.Server.Implementations.Security
|
||||
{
|
||||
if (info == null)
|
||||
{
|
||||
throw new ArgumentNullException("info");
|
||||
throw new ArgumentNullException(nameof(info));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
@@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.Security
|
||||
{
|
||||
if (info == null)
|
||||
{
|
||||
throw new ArgumentNullException("entry");
|
||||
throw new ArgumentNullException(nameof(info));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
@@ -161,7 +161,7 @@ namespace Emby.Server.Implementations.Security
|
||||
{
|
||||
if (info == null)
|
||||
{
|
||||
throw new ArgumentNullException("entry");
|
||||
throw new ArgumentNullException(nameof(info));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
@@ -183,7 +183,7 @@ namespace Emby.Server.Implementations.Security
|
||||
|
||||
private const string BaseSelectText = "select Tokens.Id, AccessToken, DeviceId, AppName, AppVersion, DeviceName, UserId, UserName, DateCreated, DateLastActivity, Devices.CustomName from Tokens left join Devices on Tokens.DeviceId=Devices.Id";
|
||||
|
||||
private void BindAuthenticationQueryParams(AuthenticationInfoQuery query, IStatement statement)
|
||||
private static void BindAuthenticationQueryParams(AuthenticationInfoQuery query, IStatement statement)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(query.AccessToken))
|
||||
{
|
||||
@@ -205,7 +205,7 @@ namespace Emby.Server.Implementations.Security
|
||||
{
|
||||
if (query == null)
|
||||
{
|
||||
throw new ArgumentNullException("query");
|
||||
throw new ArgumentNullException(nameof(query));
|
||||
}
|
||||
|
||||
var commandText = BaseSelectText;
|
||||
@@ -306,7 +306,7 @@ namespace Emby.Server.Implementations.Security
|
||||
}
|
||||
}
|
||||
|
||||
private AuthenticationInfo Get(IReadOnlyList<IResultSetValue> reader)
|
||||
private static AuthenticationInfo Get(IReadOnlyList<IResultSetValue> reader)
|
||||
{
|
||||
var info = new AuthenticationInfo
|
||||
{
|
||||
@@ -397,7 +397,7 @@ namespace Emby.Server.Implementations.Security
|
||||
{
|
||||
if (options == null)
|
||||
{
|
||||
throw new ArgumentNullException("options");
|
||||
throw new ArgumentNullException(nameof(options));
|
||||
}
|
||||
|
||||
using (WriteLock.Write())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using MediaBrowser.Controller.Security;
|
||||
using MediaBrowser.Controller.Security;
|
||||
using System;
|
||||
using System.Text;
|
||||
|
||||
@@ -14,7 +14,10 @@ namespace Emby.Server.Implementations.Security
|
||||
/// <exception cref="System.ArgumentNullException">value</exception>
|
||||
public string EncryptString(string value)
|
||||
{
|
||||
if (value == null) throw new ArgumentNullException("value");
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
return EncryptStringUniversal(value);
|
||||
}
|
||||
@@ -27,12 +30,15 @@ namespace Emby.Server.Implementations.Security
|
||||
/// <exception cref="System.ArgumentNullException">value</exception>
|
||||
public string DecryptString(string value)
|
||||
{
|
||||
if (value == null) throw new ArgumentNullException("value");
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(value));
|
||||
}
|
||||
|
||||
return DecryptStringUniversal(value);
|
||||
}
|
||||
|
||||
private string EncryptStringUniversal(string value)
|
||||
private static string EncryptStringUniversal(string value)
|
||||
{
|
||||
// Yes, this isn't good, but ProtectedData in mono is throwing exceptions, so use this for now
|
||||
|
||||
@@ -40,7 +46,7 @@ namespace Emby.Server.Implementations.Security
|
||||
return Convert.ToBase64String(bytes);
|
||||
}
|
||||
|
||||
private string DecryptStringUniversal(string value)
|
||||
private static string DecryptStringUniversal(string value)
|
||||
{
|
||||
// Yes, this isn't good, but ProtectedData in mono is throwing exceptions, so use this for now
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Emby.Server.Implementations.Security
|
||||
|
||||
public string RegKey
|
||||
{
|
||||
get { return _regKey; }
|
||||
get => _regKey;
|
||||
set
|
||||
{
|
||||
_updateRecords.Clear();
|
||||
@@ -27,13 +27,7 @@ namespace Emby.Server.Implementations.Security
|
||||
}
|
||||
}
|
||||
|
||||
private string Filename
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(_appPaths.ConfigurationDirectoryPath, "mb.lic");
|
||||
}
|
||||
}
|
||||
private string Filename => Path.Combine(_appPaths.ConfigurationDirectoryPath, "mb.lic");
|
||||
|
||||
private readonly ConcurrentDictionary<Guid, FeatureRegInfo> _updateRecords = new ConcurrentDictionary<Guid, FeatureRegInfo>();
|
||||
private readonly object _fileLock = new object();
|
||||
|
||||
@@ -34,10 +34,7 @@ namespace Emby.Server.Implementations.Security
|
||||
}
|
||||
|
||||
private MBLicenseFile _licenseFile;
|
||||
private MBLicenseFile LicenseFile
|
||||
{
|
||||
get { return _licenseFile ?? (_licenseFile = new MBLicenseFile(_appPaths, _fileSystem, _cryptographyProvider)); }
|
||||
}
|
||||
private MBLicenseFile LicenseFile => _licenseFile ?? (_licenseFile = new MBLicenseFile(_appPaths, _fileSystem, _cryptographyProvider));
|
||||
|
||||
private readonly IHttpClient _httpClient;
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
@@ -55,7 +52,7 @@ namespace Emby.Server.Implementations.Security
|
||||
{
|
||||
if (httpClient == null)
|
||||
{
|
||||
throw new ArgumentNullException("httpClient");
|
||||
throw new ArgumentNullException(nameof(httpClient));
|
||||
}
|
||||
|
||||
_appHost = appHost;
|
||||
@@ -82,14 +79,8 @@ namespace Emby.Server.Implementations.Security
|
||||
/// <value>The supporter key.</value>
|
||||
public string SupporterKey
|
||||
{
|
||||
get
|
||||
{
|
||||
return LicenseFile.RegKey;
|
||||
}
|
||||
set
|
||||
{
|
||||
throw new Exception("Please call UpdateSupporterKey");
|
||||
}
|
||||
get => LicenseFile.RegKey;
|
||||
set => throw new Exception("Please call UpdateSupporterKey");
|
||||
}
|
||||
|
||||
public async Task UpdateSupporterKey(string newValue)
|
||||
@@ -138,7 +129,7 @@ namespace Emby.Server.Implementations.Security
|
||||
_logger.LogError(msg);
|
||||
throw new ArgumentException(msg);
|
||||
}
|
||||
if (!String.IsNullOrEmpty(reg.key))
|
||||
if (!string.IsNullOrEmpty(reg.key))
|
||||
{
|
||||
await UpdateSupporterKey(reg.key).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user