diff --git a/Emby.Common.Implementations/BaseApplicationHost.cs b/Emby.Common.Implementations/BaseApplicationHost.cs
deleted file mode 100644
index e7710162ca..0000000000
--- a/Emby.Common.Implementations/BaseApplicationHost.cs
+++ /dev/null
@@ -1,902 +0,0 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Events;
-using Emby.Common.Implementations.Devices;
-using Emby.Common.Implementations.IO;
-using Emby.Common.Implementations.ScheduledTasks;
-using Emby.Common.Implementations.Serialization;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Common.Plugins;
-using MediaBrowser.Common.Progress;
-using MediaBrowser.Common.Security;
-using MediaBrowser.Common.Updates;
-using MediaBrowser.Model.Events;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Serialization;
-using MediaBrowser.Model.Updates;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Extensions;
-using Emby.Common.Implementations.Cryptography;
-using Emby.Common.Implementations.Diagnostics;
-using Emby.Common.Implementations.Net;
-using Emby.Common.Implementations.EnvironmentInfo;
-using Emby.Common.Implementations.Threading;
-using MediaBrowser.Common;
-using MediaBrowser.Model.Cryptography;
-using MediaBrowser.Model.Diagnostics;
-using MediaBrowser.Model.Net;
-using MediaBrowser.Model.System;
-using MediaBrowser.Model.Tasks;
-using MediaBrowser.Model.Threading;
-
-namespace Emby.Common.Implementations
-{
- ///
- /// Class BaseApplicationHost
- ///
- /// The type of the T application paths type.
- public abstract class BaseApplicationHost : IApplicationHost
- where TApplicationPathsType : class, IApplicationPaths
- {
- ///
- /// Occurs when [has pending restart changed].
- ///
- public event EventHandler HasPendingRestartChanged;
-
- ///
- /// Occurs when [application updated].
- ///
- public event EventHandler> ApplicationUpdated;
-
- ///
- /// Gets or sets a value indicating whether this instance has changes that require the entire application to restart.
- ///
- /// true if this instance has pending application restart; otherwise, false.
- public bool HasPendingRestart { get; private set; }
-
- ///
- /// Gets or sets the logger.
- ///
- /// The logger.
- protected ILogger Logger { get; private set; }
-
- ///
- /// Gets or sets the plugins.
- ///
- /// The plugins.
- public IPlugin[] Plugins { get; protected set; }
-
- ///
- /// Gets or sets the log manager.
- ///
- /// The log manager.
- public ILogManager LogManager { get; protected set; }
-
- ///
- /// Gets the application paths.
- ///
- /// The application paths.
- protected TApplicationPathsType ApplicationPaths { get; private set; }
-
- ///
- /// The json serializer
- ///
- public IJsonSerializer JsonSerializer { get; private set; }
-
- ///
- /// The _XML serializer
- ///
- protected readonly IXmlSerializer XmlSerializer;
-
- ///
- /// Gets assemblies that failed to load
- ///
- /// The failed assemblies.
- public List FailedAssemblies { get; protected set; }
-
- ///
- /// Gets all concrete types.
- ///
- /// All concrete types.
- public Type[] AllConcreteTypes { get; protected set; }
-
- ///
- /// The disposable parts
- ///
- protected readonly List DisposableParts = new List();
-
- ///
- /// Gets a value indicating whether this instance is first run.
- ///
- /// true if this instance is first run; otherwise, false.
- public bool IsFirstRun { get; private set; }
-
- ///
- /// Gets the kernel.
- ///
- /// The kernel.
- protected ITaskManager TaskManager { get; private set; }
- ///
- /// Gets the HTTP client.
- ///
- /// The HTTP client.
- public IHttpClient HttpClient { get; private set; }
- ///
- /// Gets the network manager.
- ///
- /// The network manager.
- protected INetworkManager NetworkManager { get; private set; }
-
- ///
- /// Gets the configuration manager.
- ///
- /// The configuration manager.
- protected IConfigurationManager ConfigurationManager { get; private set; }
-
- public IFileSystem FileSystemManager { get; private set; }
-
- protected IIsoManager IsoManager { get; private set; }
-
- protected IProcessFactory ProcessFactory { get; private set; }
- protected ITimerFactory TimerFactory { get; private set; }
- protected ISocketFactory SocketFactory { get; private set; }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public abstract string Name { get; }
-
- protected ICryptoProvider CryptographyProvider = new CryptographyProvider();
-
- protected IEnvironmentInfo EnvironmentInfo { get; private set; }
-
- private DeviceId _deviceId;
- public string SystemId
- {
- get
- {
- if (_deviceId == null)
- {
- _deviceId = new DeviceId(ApplicationPaths, LogManager.GetLogger("SystemId"), FileSystemManager);
- }
-
- return _deviceId.Value;
- }
- }
-
- public PackageVersionClass SystemUpdateLevel
- {
- get
- {
-
-#if BETA
- return PackageVersionClass.Beta;
-#endif
- return PackageVersionClass.Release;
- }
- }
-
- public virtual string OperatingSystemDisplayName
- {
- get { return EnvironmentInfo.OperatingSystemName; }
- }
-
- ///
- /// The container
- ///
- protected readonly SimpleInjector.Container Container = new SimpleInjector.Container();
-
- protected ISystemEvents SystemEvents { get; private set; }
- protected IMemoryStreamFactory MemoryStreamFactory { get; private set; }
-
- ///
- /// Initializes a new instance of the class.
- ///
- protected BaseApplicationHost(TApplicationPathsType applicationPaths,
- ILogManager logManager,
- IFileSystem fileSystem,
- IEnvironmentInfo environmentInfo,
- ISystemEvents systemEvents,
- IMemoryStreamFactory memoryStreamFactory,
- INetworkManager networkManager)
- {
- NetworkManager = networkManager;
- EnvironmentInfo = environmentInfo;
- SystemEvents = systemEvents;
- MemoryStreamFactory = memoryStreamFactory;
-
- // hack alert, until common can target .net core
- BaseExtensions.CryptographyProvider = CryptographyProvider;
-
- XmlSerializer = new MyXmlSerializer(fileSystem, logManager.GetLogger("XmlSerializer"));
- FailedAssemblies = new List();
-
- ApplicationPaths = applicationPaths;
- LogManager = logManager;
- FileSystemManager = fileSystem;
-
- ConfigurationManager = GetConfigurationManager();
-
- // Initialize this early in case the -v command line option is used
- Logger = LogManager.GetLogger("App");
- }
-
- ///
- /// Inits this instance.
- ///
- /// Task.
- public virtual async Task Init(IProgress progress)
- {
- progress.Report(1);
-
- JsonSerializer = CreateJsonSerializer();
-
- OnLoggerLoaded(true);
- LogManager.LoggerLoaded += (s, e) => OnLoggerLoaded(false);
-
- IsFirstRun = !ConfigurationManager.CommonConfiguration.IsStartupWizardCompleted;
- progress.Report(2);
-
- LogManager.LogSeverity = ConfigurationManager.CommonConfiguration.EnableDebugLevelLogging
- ? LogSeverity.Debug
- : LogSeverity.Info;
-
- progress.Report(3);
-
- DiscoverTypes();
- progress.Report(14);
-
- SetHttpLimit();
- progress.Report(15);
-
- var innerProgress = new ActionableProgress();
- innerProgress.RegisterAction(p => progress.Report(.8 * p + 15));
-
- await RegisterResources(innerProgress).ConfigureAwait(false);
-
- FindParts();
- progress.Report(95);
-
- await InstallIsoMounters(CancellationToken.None).ConfigureAwait(false);
-
- progress.Report(100);
- }
-
- protected virtual void OnLoggerLoaded(bool isFirstLoad)
- {
- Logger.Info("Application version: {0}", ApplicationVersion);
-
- if (!isFirstLoad)
- {
- LogEnvironmentInfo(Logger, ApplicationPaths, false);
- }
-
- // Put the app config in the log for troubleshooting purposes
- Logger.LogMultiline("Application configuration:", LogSeverity.Info, new StringBuilder(JsonSerializer.SerializeToString(ConfigurationManager.CommonConfiguration)));
-
- if (Plugins != null)
- {
- var pluginBuilder = new StringBuilder();
-
- foreach (var plugin in Plugins)
- {
- pluginBuilder.AppendLine(string.Format("{0} {1}", plugin.Name, plugin.Version));
- }
-
- Logger.LogMultiline("Plugins:", LogSeverity.Info, pluginBuilder);
- }
- }
-
- public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths, bool isStartup)
- {
- logger.LogMultiline("Emby", LogSeverity.Info, GetBaseExceptionMessage(appPaths));
- }
-
- protected static StringBuilder GetBaseExceptionMessage(IApplicationPaths appPaths)
- {
- var builder = new StringBuilder();
-
- builder.AppendLine(string.Format("Command line: {0}", string.Join(" ", Environment.GetCommandLineArgs())));
-
- builder.AppendLine(string.Format("Operating system: {0}", Environment.OSVersion));
- builder.AppendLine(string.Format("64-Bit OS: {0}", Environment.Is64BitOperatingSystem));
- builder.AppendLine(string.Format("64-Bit Process: {0}", Environment.Is64BitProcess));
-
- Type type = Type.GetType("Mono.Runtime");
- if (type != null)
- {
- MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
- if (displayName != null)
- {
- builder.AppendLine("Mono: " + displayName.Invoke(null, null));
- }
- }
-
- builder.AppendLine(string.Format("Processor count: {0}", Environment.ProcessorCount));
- builder.AppendLine(string.Format("Program data path: {0}", appPaths.ProgramDataPath));
- builder.AppendLine(string.Format("Application directory: {0}", appPaths.ProgramSystemPath));
-
- return builder;
- }
-
- protected abstract IJsonSerializer CreateJsonSerializer();
-
- private void SetHttpLimit()
- {
- try
- {
- // Increase the max http request limit
- ServicePointManager.DefaultConnectionLimit = Math.Max(96, ServicePointManager.DefaultConnectionLimit);
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error setting http limit", ex);
- }
- }
-
- ///
- /// Installs the iso mounters.
- ///
- /// The cancellation token.
- /// Task.
- private async Task InstallIsoMounters(CancellationToken cancellationToken)
- {
- var list = new List();
-
- foreach (var isoMounter in GetExports())
- {
- try
- {
- if (isoMounter.RequiresInstallation && !isoMounter.IsInstalled)
- {
- Logger.Info("Installing {0}", isoMounter.Name);
-
- await isoMounter.Install(cancellationToken).ConfigureAwait(false);
- }
-
- list.Add(isoMounter);
- }
- catch (Exception ex)
- {
- Logger.ErrorException("{0} failed to load.", ex, isoMounter.Name);
- }
- }
-
- IsoManager.AddParts(list);
- }
-
- ///
- /// Runs the startup tasks.
- ///
- /// Task.
- public virtual Task RunStartupTasks()
- {
- Resolve().AddTasks(GetExports(false));
-
- ConfigureAutorun();
-
- ConfigurationManager.ConfigurationUpdated += OnConfigurationUpdated;
-
- return Task.FromResult(true);
- }
-
- ///
- /// Configures the autorun.
- ///
- private void ConfigureAutorun()
- {
- try
- {
- ConfigureAutoRunAtStartup(ConfigurationManager.CommonConfiguration.RunAtStartup);
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error configuring autorun", ex);
- }
- }
-
- ///
- /// Gets the composable part assemblies.
- ///
- /// IEnumerable{Assembly}.
- protected abstract IEnumerable GetComposablePartAssemblies();
-
- ///
- /// Gets the configuration manager.
- ///
- /// IConfigurationManager.
- protected abstract IConfigurationManager GetConfigurationManager();
-
- ///
- /// Finds the parts.
- ///
- protected virtual void FindParts()
- {
- ConfigurationManager.AddParts(GetExports());
- Plugins = GetExports().Select(LoadPlugin).Where(i => i != null).ToArray();
- }
-
- private IPlugin LoadPlugin(IPlugin plugin)
- {
- try
- {
- var assemblyPlugin = plugin as IPluginAssembly;
-
- if (assemblyPlugin != null)
- {
- var assembly = plugin.GetType().Assembly;
- var assemblyName = assembly.GetName();
-
- var attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute), true)[0];
- var assemblyId = new Guid(attribute.Value);
-
- var assemblyFileName = assemblyName.Name + ".dll";
- var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName);
-
- assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId);
- }
-
- var isFirstRun = !File.Exists(plugin.ConfigurationFilePath);
- plugin.SetStartupInfo(isFirstRun, File.GetLastWriteTimeUtc, s => Directory.CreateDirectory(s));
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error loading plugin {0}", ex, plugin.GetType().FullName);
- return null;
- }
-
- return plugin;
- }
-
- ///
- /// Discovers the types.
- ///
- protected void DiscoverTypes()
- {
- FailedAssemblies.Clear();
-
- var assemblies = GetComposablePartAssemblies().ToList();
-
- foreach (var assembly in assemblies)
- {
- Logger.Info("Loading {0}", assembly.FullName);
- }
-
- AllConcreteTypes = assemblies
- .SelectMany(GetTypes)
- .Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType)
- .ToArray();
- }
-
- ///
- /// Registers resources that classes will depend on
- ///
- /// Task.
- protected virtual Task RegisterResources(IProgress progress)
- {
- RegisterSingleInstance(ConfigurationManager);
- RegisterSingleInstance(this);
-
- RegisterSingleInstance(ApplicationPaths);
-
- TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, LogManager.GetLogger("TaskManager"), FileSystemManager, SystemEvents);
-
- RegisterSingleInstance(JsonSerializer);
- RegisterSingleInstance(XmlSerializer);
- RegisterSingleInstance(MemoryStreamFactory);
- RegisterSingleInstance(SystemEvents);
-
- RegisterSingleInstance(LogManager);
- RegisterSingleInstance(Logger);
-
- RegisterSingleInstance(TaskManager);
- RegisterSingleInstance(EnvironmentInfo);
-
- RegisterSingleInstance(FileSystemManager);
-
- HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamFactory, GetDefaultUserAgent);
- RegisterSingleInstance(HttpClient);
-
- RegisterSingleInstance(NetworkManager);
-
- IsoManager = new IsoManager();
- RegisterSingleInstance(IsoManager);
-
- ProcessFactory = new ProcessFactory();
- RegisterSingleInstance(ProcessFactory);
-
- TimerFactory = new TimerFactory();
- RegisterSingleInstance(TimerFactory);
-
- SocketFactory = new SocketFactory(LogManager.GetLogger("SocketFactory"));
- RegisterSingleInstance(SocketFactory);
-
- RegisterSingleInstance(CryptographyProvider);
-
- return Task.FromResult(true);
- }
-
- private string GetDefaultUserAgent()
- {
- var name = FormatAttribute(Name);
-
- return name + "/" + ApplicationVersion.ToString();
- }
-
- private string FormatAttribute(string str)
- {
- var arr = str.ToCharArray();
-
- arr = Array.FindAll(arr, (c => (char.IsLetterOrDigit(c)
- || char.IsWhiteSpace(c))));
-
- var result = new string(arr);
-
- if (string.IsNullOrWhiteSpace(result))
- {
- result = "Emby";
- }
-
- return result;
- }
-
- ///
- /// Gets a list of types within an assembly
- /// This will handle situations that would normally throw an exception - such as a type within the assembly that depends on some other non-existant reference
- ///
- /// The assembly.
- /// IEnumerable{Type}.
- /// assembly
- protected List GetTypes(Assembly assembly)
- {
- if (assembly == null)
- {
- return new List();
- }
-
- try
- {
- // This null checking really shouldn't be needed but adding it due to some
- // unhandled exceptions in mono 5.0 that are a little hard to hunt down
- var types = assembly.GetTypes() ?? new Type[] { };
- return types.Where(t => t != null).ToList();
- }
- catch (ReflectionTypeLoadException ex)
- {
- if (ex.LoaderExceptions != null)
- {
- foreach (var loaderException in ex.LoaderExceptions)
- {
- if (loaderException != null)
- {
- Logger.Error("LoaderException: " + loaderException.Message);
- }
- }
- }
-
- // If it fails we can still get a list of the Types it was able to resolve
- var types = ex.Types ?? new Type[] { };
- return types.Where(t => t != null).ToList();
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error loading types from assembly", ex);
-
- return new List();
- }
- }
-
- ///
- /// Creates an instance of type and resolves all constructor dependancies
- ///
- /// The type.
- /// System.Object.
- public object CreateInstance(Type type)
- {
- try
- {
- return Container.GetInstance(type);
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error creating {0}", ex, type.FullName);
-
- throw;
- }
- }
-
- ///
- /// Creates the instance safe.
- ///
- /// The type.
- /// System.Object.
- protected object CreateInstanceSafe(Type type)
- {
- try
- {
- return Container.GetInstance(type);
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error creating {0}", ex, type.FullName);
- // Don't blow up in release mode
- return null;
- }
- }
-
- ///
- /// Registers the specified obj.
- ///
- ///
- /// The obj.
- /// if set to true [manage lifetime].
- protected void RegisterSingleInstance(T obj, bool manageLifetime = true)
- where T : class
- {
- Container.RegisterSingleton(obj);
-
- if (manageLifetime)
- {
- var disposable = obj as IDisposable;
-
- if (disposable != null)
- {
- DisposableParts.Add(disposable);
- }
- }
- }
-
- ///
- /// Registers the single instance.
- ///
- ///
- /// The func.
- protected void RegisterSingleInstance(Func func)
- where T : class
- {
- Container.RegisterSingleton(func);
- }
-
- ///
- /// Resolves this instance.
- ///
- ///
- /// ``0.
- public T Resolve()
- {
- return (T)Container.GetRegistration(typeof(T), true).GetInstance();
- }
-
- ///
- /// Resolves this instance.
- ///
- ///
- /// ``0.
- public T TryResolve()
- {
- var result = Container.GetRegistration(typeof(T), false);
-
- if (result == null)
- {
- return default(T);
- }
- return (T)result.GetInstance();
- }
-
- ///
- /// Loads the assembly.
- ///
- /// The file.
- /// Assembly.
- protected Assembly LoadAssembly(string file)
- {
- try
- {
- return Assembly.Load(File.ReadAllBytes(file));
- }
- catch (Exception ex)
- {
- FailedAssemblies.Add(file);
- Logger.ErrorException("Error loading assembly {0}", ex, file);
- return null;
- }
- }
-
- ///
- /// Gets the export types.
- ///
- ///
- /// IEnumerable{Type}.
- public IEnumerable GetExportTypes()
- {
- var currentType = typeof(T);
-
- return AllConcreteTypes.Where(currentType.IsAssignableFrom);
- }
-
- ///
- /// Gets the exports.
- ///
- ///
- /// if set to true [manage liftime].
- /// IEnumerable{``0}.
- public IEnumerable GetExports(bool manageLiftime = true)
- {
- var parts = GetExportTypes()
- .Select(CreateInstanceSafe)
- .Where(i => i != null)
- .Cast()
- .ToList();
-
- if (manageLiftime)
- {
- lock (DisposableParts)
- {
- DisposableParts.AddRange(parts.OfType());
- }
- }
-
- return parts;
- }
-
- ///
- /// Gets the application version.
- ///
- /// The application version.
- public abstract Version ApplicationVersion { get; }
-
- ///
- /// Handles the ConfigurationUpdated event of the ConfigurationManager control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
- ///
- protected virtual void OnConfigurationUpdated(object sender, EventArgs e)
- {
- ConfigureAutorun();
- }
-
- protected abstract void ConfigureAutoRunAtStartup(bool autorun);
-
- ///
- /// Removes the plugin.
- ///
- /// The plugin.
- public void RemovePlugin(IPlugin plugin)
- {
- var list = Plugins.ToList();
- list.Remove(plugin);
- Plugins = list.ToArray();
- }
-
- ///
- /// Gets a value indicating whether this instance can self restart.
- ///
- /// true if this instance can self restart; otherwise, false.
- public abstract bool CanSelfRestart { get; }
-
- ///
- /// Notifies that the kernel that a change has been made that requires a restart
- ///
- public void NotifyPendingRestart()
- {
- Logger.Info("App needs to be restarted.");
-
- var changed = !HasPendingRestart;
-
- HasPendingRestart = true;
-
- if (changed)
- {
- EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger);
- }
- }
-
- ///
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- ///
- public void Dispose()
- {
- Dispose(true);
- }
-
- ///
- /// Releases unmanaged and - optionally - managed resources.
- ///
- /// true to release both managed and unmanaged resources; false to release only unmanaged resources.
- protected virtual void Dispose(bool dispose)
- {
- if (dispose)
- {
- var type = GetType();
-
- Logger.Info("Disposing " + type.Name);
-
- var parts = DisposableParts.Distinct().Where(i => i.GetType() != type).ToList();
- DisposableParts.Clear();
-
- foreach (var part in parts)
- {
- Logger.Info("Disposing " + part.GetType().Name);
-
- try
- {
- part.Dispose();
- }
- catch (Exception ex)
- {
- Logger.ErrorException("Error disposing {0}", ex, part.GetType().Name);
- }
- }
- }
- }
-
- ///
- /// Restarts this instance.
- ///
- public abstract Task Restart();
-
- ///
- /// Gets or sets a value indicating whether this instance can self update.
- ///
- /// true if this instance can self update; otherwise, false.
- public virtual bool CanSelfUpdate
- {
- get
- {
- return false;
- }
- }
-
- ///
- /// Checks for update.
- ///
- /// The cancellation token.
- /// The progress.
- /// Task{CheckForUpdateResult}.
- public abstract Task CheckForApplicationUpdate(CancellationToken cancellationToken,
- IProgress progress);
-
- ///
- /// Updates the application.
- ///
- /// The package that contains the update
- /// The cancellation token.
- /// The progress.
- /// Task.
- public abstract Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken,
- IProgress progress);
-
- ///
- /// Shuts down.
- ///
- public abstract Task Shutdown();
-
- ///
- /// Called when [application updated].
- ///
- /// The package.
- protected void OnApplicationUpdated(PackageVersionInfo package)
- {
- Logger.Info("Application has been updated to version {0}", package.versionStr);
-
- EventHelper.FireEventIfNotNull(ApplicationUpdated, this, new GenericEventArgs
- {
- Argument = package
-
- }, Logger);
-
- NotifyPendingRestart();
- }
- }
-}
diff --git a/Emby.Common.Implementations/Emby.Common.Implementations.csproj b/Emby.Common.Implementations/Emby.Common.Implementations.csproj
deleted file mode 100644
index cbd077e199..0000000000
--- a/Emby.Common.Implementations/Emby.Common.Implementations.csproj
+++ /dev/null
@@ -1,452 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}
- Library
- Properties
- Emby.Common.Implementations
- Emby.Common.Implementations
- v4.6
- 512
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- ..\packages\NLog.4.4.12\lib\net45\NLog.dll
-
-
- ..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll
- True
-
-
- ..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll
- True
-
-
- ..\packages\SimpleInjector.4.0.8\lib\net45\SimpleInjector.dll
-
-
-
-
-
-
-
-
-
-
-
-
- Properties\SharedVersion.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {9142eefa-7570-41e1-bfcc-468bb571af2f}
- MediaBrowser.Common
-
-
- {7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}
- MediaBrowser.Model
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Emby.Common.Implementations/Properties/AssemblyInfo.cs b/Emby.Common.Implementations/Properties/AssemblyInfo.cs
deleted file mode 100644
index 787f18997c..0000000000
--- a/Emby.Common.Implementations/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("Emby.Common.Implementations")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Emby.Common.Implementations")]
-[assembly: AssemblyCopyright("Copyright © 2017")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// 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)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("1e37a338-9f57-4b70-bd6d-bb9c591e319b")]
-
-// 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.*")]
\ No newline at end of file
diff --git a/Emby.Common.Implementations/packages.config b/Emby.Common.Implementations/packages.config
deleted file mode 100644
index eb8fd586ef..0000000000
--- a/Emby.Common.Implementations/packages.config
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Emby.Dlna/Didl/DidlBuilder.cs b/Emby.Dlna/Didl/DidlBuilder.cs
index 71a0493948..64e76276cf 100644
--- a/Emby.Dlna/Didl/DidlBuilder.cs
+++ b/Emby.Dlna/Didl/DidlBuilder.cs
@@ -661,7 +661,7 @@ namespace Emby.Dlna.Didl
return;
}
- XmlAttribute secAttribute = null;
+ MediaBrowser.Model.Dlna.XmlAttribute secAttribute = null;
foreach (var attribute in _profile.XmlRootAttributes)
{
if (string.Equals(attribute.Name, "xmlns:sec", StringComparison.OrdinalIgnoreCase))
diff --git a/Emby.Dlna/Main/DlnaEntryPoint.cs b/Emby.Dlna/Main/DlnaEntryPoint.cs
index 16108522c3..a6facab7d7 100644
--- a/Emby.Dlna/Main/DlnaEntryPoint.cs
+++ b/Emby.Dlna/Main/DlnaEntryPoint.cs
@@ -158,7 +158,7 @@ namespace Emby.Dlna.Main
{
if (_communicationsServer == null)
{
- var enableMultiSocketBinding = _environmentInfo.OperatingSystem == OperatingSystem.Windows;
+ var enableMultiSocketBinding = _environmentInfo.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.Windows;
_communicationsServer = new SsdpCommunicationsServer(_socketFactory, _networkManager, _logger, enableMultiSocketBinding)
{
diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj
index 90418f6317..c5dd671a85 100644
--- a/Emby.Drawing/Emby.Drawing.csproj
+++ b/Emby.Drawing/Emby.Drawing.csproj
@@ -32,11 +32,6 @@
prompt
4
-
-
- ..\ThirdParty\taglib\TagLib.Portable.dll
-
-
Properties\SharedVersion.cs
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 69a190fcb1..318f7d9121 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -1,11 +1,5 @@
using Emby.Common.Implementations;
-using Emby.Common.Implementations.Archiving;
-using Emby.Common.Implementations.IO;
-using Emby.Common.Implementations.Reflection;
-using Emby.Common.Implementations.ScheduledTasks;
using Emby.Common.Implementations.Serialization;
-using Emby.Common.Implementations.TextEncoding;
-using Emby.Common.Implementations.Xml;
using Emby.Dlna;
using Emby.Dlna.ConnectionManager;
using Emby.Dlna.ContentDirectory;
@@ -110,12 +104,28 @@ using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
+using System.Net;
using System.Reflection;
+using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
+using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using Emby.Server.Implementations.Archiving;
+using Emby.Server.Implementations.Cryptography;
+using Emby.Server.Implementations.Diagnostics;
+using Emby.Server.Implementations.Net;
+using Emby.Server.Implementations.Reflection;
+using Emby.Server.Implementations.ScheduledTasks;
+using Emby.Server.Implementations.Serialization;
+using Emby.Server.Implementations.Threading;
+using Emby.Server.Implementations.Xml;
using Emby.Server.MediaEncoding.Subtitles;
using MediaBrowser.MediaEncoding.BdInfo;
+using MediaBrowser.Model.Cryptography;
+using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Threading;
using StringExtensions = MediaBrowser.Controller.Extensions.StringExtensions;
namespace Emby.Server.Implementations
@@ -123,8 +133,124 @@ namespace Emby.Server.Implementations
///
/// Class CompositionRoot
///
- public abstract class ApplicationHost : BaseApplicationHost, IServerApplicationHost, IDependencyContainer
+ public abstract class ApplicationHost : IServerApplicationHost, IDependencyContainer
{
+ ///
+ /// Gets a value indicating whether this instance can self restart.
+ ///
+ /// true if this instance can self restart; otherwise, false.
+ public abstract bool CanSelfRestart { get; }
+
+ ///
+ /// Gets or sets a value indicating whether this instance can self update.
+ ///
+ /// true if this instance can self update; otherwise, false.
+ public virtual bool CanSelfUpdate
+ {
+ get
+ {
+ return false;
+ }
+ }
+
+ ///
+ /// Occurs when [has pending restart changed].
+ ///
+ public event EventHandler HasPendingRestartChanged;
+
+ ///
+ /// Occurs when [application updated].
+ ///
+ public event EventHandler> ApplicationUpdated;
+
+ ///
+ /// Gets or sets a value indicating whether this instance has changes that require the entire application to restart.
+ ///
+ /// true if this instance has pending application restart; otherwise, false.
+ public bool HasPendingRestart { get; private set; }
+
+ ///
+ /// Gets or sets the logger.
+ ///
+ /// The logger.
+ protected ILogger Logger { get; set; }
+
+ ///
+ /// Gets or sets the plugins.
+ ///
+ /// The plugins.
+ public IPlugin[] Plugins { get; protected set; }
+
+ ///
+ /// Gets or sets the log manager.
+ ///
+ /// The log manager.
+ public ILogManager LogManager { get; protected set; }
+
+ ///
+ /// Gets the application paths.
+ ///
+ /// The application paths.
+ protected ServerApplicationPaths ApplicationPaths { get; set; }
+
+ ///
+ /// Gets assemblies that failed to load
+ ///
+ /// The failed assemblies.
+ public List FailedAssemblies { get; protected set; }
+
+ ///
+ /// Gets all concrete types.
+ ///
+ /// All concrete types.
+ public Type[] AllConcreteTypes { get; protected set; }
+
+ ///
+ /// The disposable parts
+ ///
+ protected readonly List DisposableParts = new List();
+
+ ///
+ /// Gets a value indicating whether this instance is first run.
+ ///
+ /// true if this instance is first run; otherwise, false.
+ public bool IsFirstRun { get; private set; }
+
+ ///
+ /// Gets the configuration manager.
+ ///
+ /// The configuration manager.
+ protected IConfigurationManager ConfigurationManager { get; set; }
+
+ public IFileSystem FileSystemManager { get; set; }
+
+ protected IEnvironmentInfo EnvironmentInfo { get; set; }
+
+ public PackageVersionClass SystemUpdateLevel
+ {
+ get
+ {
+
+#if BETA
+ return PackageVersionClass.Beta;
+#endif
+ return PackageVersionClass.Release;
+ }
+ }
+
+ public virtual string OperatingSystemDisplayName
+ {
+ get { return EnvironmentInfo.OperatingSystemName; }
+ }
+
+ ///
+ /// The container
+ ///
+ protected readonly SimpleInjector.Container Container = new SimpleInjector.Container();
+
+ protected ISystemEvents SystemEvents { get; set; }
+ protected IMemoryStreamFactory MemoryStreamFactory { get; set; }
+
///
/// Gets the server configuration manager.
///
@@ -138,7 +264,7 @@ namespace Emby.Server.Implementations
/// Gets the configuration manager.
///
/// IConfigurationManager.
- protected override IConfigurationManager GetConfigurationManager()
+ protected IConfigurationManager GetConfigurationManager()
{
return new ServerConfigurationManager(ApplicationPaths, LogManager, XmlSerializer, FileSystemManager);
}
@@ -244,6 +370,17 @@ namespace Emby.Server.Implementations
private readonly Action _certificateGenerator;
private readonly Func _defaultUserNameFactory;
+ protected IProcessFactory ProcessFactory { get; private set; }
+ protected ITimerFactory TimerFactory { get; private set; }
+ protected ICryptoProvider CryptographyProvider = new CryptographyProvider();
+ protected readonly IXmlSerializer XmlSerializer;
+
+ protected ISocketFactory SocketFactory { get; private set; }
+ protected ITaskManager TaskManager { get; private set; }
+ public IHttpClient HttpClient { get; private set; }
+ protected INetworkManager NetworkManager { get; set; }
+ public IJsonSerializer JsonSerializer { get; private set; }
+ protected IIsoManager IsoManager { get; private set; }
///
/// Initializes a new instance of the class.
@@ -261,14 +398,28 @@ namespace Emby.Server.Implementations
INetworkManager networkManager,
Action certificateGenerator,
Func defaultUsernameFactory)
- : base(applicationPaths,
- logManager,
- fileSystem,
- environmentInfo,
- systemEvents,
- memoryStreamFactory,
- networkManager)
{
+ // hack alert, until common can target .net core
+ BaseExtensions.CryptographyProvider = CryptographyProvider;
+
+ XmlSerializer = new MyXmlSerializer(fileSystem, logManager.GetLogger("XmlSerializer"));
+
+ NetworkManager = networkManager;
+ EnvironmentInfo = environmentInfo;
+ SystemEvents = systemEvents;
+ MemoryStreamFactory = memoryStreamFactory;
+
+ FailedAssemblies = new List();
+
+ ApplicationPaths = applicationPaths;
+ LogManager = logManager;
+ FileSystemManager = fileSystem;
+
+ ConfigurationManager = GetConfigurationManager();
+
+ // Initialize this early in case the -v command line option is used
+ Logger = LogManager.GetLogger("App");
+
StartupOptions = options;
_certificateGenerator = certificateGenerator;
_releaseAssetFilename = releaseAssetFilename;
@@ -292,7 +443,7 @@ namespace Emby.Server.Implementations
/// Gets the current application version
///
/// The application version.
- public override Version ApplicationVersion
+ public Version ApplicationVersion
{
get
{
@@ -308,11 +459,25 @@ namespace Emby.Server.Implementations
}
}
+ private DeviceId _deviceId;
+ public string SystemId
+ {
+ get
+ {
+ if (_deviceId == null)
+ {
+ _deviceId = new DeviceId(ApplicationPaths, LogManager.GetLogger("SystemId"), FileSystemManager);
+ }
+
+ return _deviceId.Value;
+ }
+ }
+
///
/// Gets the name.
///
/// The name.
- public override string Name
+ public string Name
{
get
{
@@ -341,6 +506,159 @@ namespace Emby.Server.Implementations
}
}
+ ///
+ /// Creates an instance of type and resolves all constructor dependancies
+ ///
+ /// The type.
+ /// System.Object.
+ public object CreateInstance(Type type)
+ {
+ try
+ {
+ return Container.GetInstance(type);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error creating {0}", ex, type.FullName);
+
+ throw;
+ }
+ }
+
+ ///
+ /// Creates the instance safe.
+ ///
+ /// The type.
+ /// System.Object.
+ protected object CreateInstanceSafe(Type type)
+ {
+ try
+ {
+ return Container.GetInstance(type);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error creating {0}", ex, type.FullName);
+ // Don't blow up in release mode
+ return null;
+ }
+ }
+
+ ///
+ /// Registers the specified obj.
+ ///
+ ///
+ /// The obj.
+ /// if set to true [manage lifetime].
+ protected void RegisterSingleInstance(T obj, bool manageLifetime = true)
+ where T : class
+ {
+ Container.RegisterSingleton(obj);
+
+ if (manageLifetime)
+ {
+ var disposable = obj as IDisposable;
+
+ if (disposable != null)
+ {
+ DisposableParts.Add(disposable);
+ }
+ }
+ }
+
+ ///
+ /// Registers the single instance.
+ ///
+ ///
+ /// The func.
+ protected void RegisterSingleInstance(Func func)
+ where T : class
+ {
+ Container.RegisterSingleton(func);
+ }
+
+ ///
+ /// Resolves this instance.
+ ///
+ ///
+ /// ``0.
+ public T Resolve()
+ {
+ return (T)Container.GetRegistration(typeof(T), true).GetInstance();
+ }
+
+ ///
+ /// Resolves this instance.
+ ///
+ ///
+ /// ``0.
+ public T TryResolve()
+ {
+ var result = Container.GetRegistration(typeof(T), false);
+
+ if (result == null)
+ {
+ return default(T);
+ }
+ return (T)result.GetInstance();
+ }
+
+ ///
+ /// Loads the assembly.
+ ///
+ /// The file.
+ /// Assembly.
+ protected Assembly LoadAssembly(string file)
+ {
+ try
+ {
+ return Assembly.Load(File.ReadAllBytes(file));
+ }
+ catch (Exception ex)
+ {
+ FailedAssemblies.Add(file);
+ Logger.ErrorException("Error loading assembly {0}", ex, file);
+ return null;
+ }
+ }
+
+ ///
+ /// Gets the export types.
+ ///
+ ///
+ /// IEnumerable{Type}.
+ public IEnumerable GetExportTypes()
+ {
+ var currentType = typeof(T);
+
+ return AllConcreteTypes.Where(currentType.IsAssignableFrom);
+ }
+
+ ///
+ /// Gets the exports.
+ ///
+ ///
+ /// if set to true [manage liftime].
+ /// IEnumerable{``0}.
+ public IEnumerable GetExports(bool manageLiftime = true)
+ {
+ var parts = GetExportTypes()
+ .Select(CreateInstanceSafe)
+ .Where(i => i != null)
+ .Cast()
+ .ToList();
+
+ if (manageLiftime)
+ {
+ lock (DisposableParts)
+ {
+ DisposableParts.AddRange(parts.OfType());
+ }
+ }
+
+ return parts;
+ }
+
private void SetBaseExceptionMessage()
{
var builder = GetBaseExceptionMessage(ApplicationPaths);
@@ -354,9 +672,13 @@ namespace Emby.Server.Implementations
///
/// Runs the startup tasks.
///
- public override async Task RunStartupTasks()
+ public async Task RunStartupTasks()
{
- await base.RunStartupTasks().ConfigureAwait(false);
+ Resolve().AddTasks(GetExports(false));
+
+ ConfigureAutorun();
+
+ ConfigurationManager.ConfigurationUpdated += OnConfigurationUpdated;
await MediaEncoder.Init().ConfigureAwait(false);
@@ -395,7 +717,22 @@ namespace Emby.Server.Implementations
LogManager.RemoveConsoleOutput();
}
- protected override IJsonSerializer CreateJsonSerializer()
+ ///
+ /// Configures the autorun.
+ ///
+ private void ConfigureAutorun()
+ {
+ try
+ {
+ ConfigureAutoRunAtStartup(ConfigurationManager.CommonConfiguration.RunAtStartup);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error configuring autorun", ex);
+ }
+ }
+
+ private IJsonSerializer CreateJsonSerializer()
{
try
{
@@ -410,7 +747,7 @@ namespace Emby.Server.Implementations
return new JsonSerializer(FileSystemManager, LogManager.GetLogger("JsonSerializer"));
}
- public override Task Init(IProgress progress)
+ public async Task Init(IProgress progress)
{
HttpPort = ServerConfigurationManager.Configuration.HttpServerPortNumber;
HttpsPort = ServerConfigurationManager.Configuration.HttpsPortNumber;
@@ -422,7 +759,64 @@ namespace Emby.Server.Implementations
HttpsPort = ServerConfiguration.DefaultHttpsPort;
}
- return base.Init(progress);
+ progress.Report(1);
+
+ JsonSerializer = CreateJsonSerializer();
+
+ OnLoggerLoaded(true);
+ LogManager.LoggerLoaded += (s, e) => OnLoggerLoaded(false);
+
+ IsFirstRun = !ConfigurationManager.CommonConfiguration.IsStartupWizardCompleted;
+ progress.Report(2);
+
+ LogManager.LogSeverity = ConfigurationManager.CommonConfiguration.EnableDebugLevelLogging
+ ? LogSeverity.Debug
+ : LogSeverity.Info;
+
+ progress.Report(3);
+
+ DiscoverTypes();
+ progress.Report(14);
+
+ SetHttpLimit();
+ progress.Report(15);
+
+ var innerProgress = new ActionableProgress();
+ innerProgress.RegisterAction(p => progress.Report(.8 * p + 15));
+
+ await RegisterResources(innerProgress).ConfigureAwait(false);
+
+ FindParts();
+ progress.Report(95);
+
+ await InstallIsoMounters(CancellationToken.None).ConfigureAwait(false);
+
+ progress.Report(100);
+ }
+
+ protected virtual void OnLoggerLoaded(bool isFirstLoad)
+ {
+ Logger.Info("Application version: {0}", ApplicationVersion);
+
+ if (!isFirstLoad)
+ {
+ LogEnvironmentInfo(Logger, ApplicationPaths, false);
+ }
+
+ // Put the app config in the log for troubleshooting purposes
+ Logger.LogMultiline("Application configuration:", LogSeverity.Info, new StringBuilder(JsonSerializer.SerializeToString(ConfigurationManager.CommonConfiguration)));
+
+ if (Plugins != null)
+ {
+ var pluginBuilder = new StringBuilder();
+
+ foreach (var plugin in Plugins)
+ {
+ pluginBuilder.AppendLine(string.Format("{0} {1}", plugin.Name, plugin.Version));
+ }
+
+ Logger.LogMultiline("Plugins:", LogSeverity.Info, pluginBuilder);
+ }
}
protected abstract IConnectManager CreateConnectManager();
@@ -431,9 +825,47 @@ namespace Emby.Server.Implementations
///
/// Registers resources that classes will depend on
///
- protected override async Task RegisterResources(IProgress progress)
+ protected async Task RegisterResources(IProgress progress)
{
- await base.RegisterResources(progress).ConfigureAwait(false);
+ RegisterSingleInstance(ConfigurationManager);
+ RegisterSingleInstance(this);
+
+ RegisterSingleInstance(ApplicationPaths);
+
+ RegisterSingleInstance(JsonSerializer);
+ RegisterSingleInstance(MemoryStreamFactory);
+ RegisterSingleInstance(SystemEvents);
+
+ RegisterSingleInstance(LogManager);
+ RegisterSingleInstance(Logger);
+
+ RegisterSingleInstance(EnvironmentInfo);
+
+ RegisterSingleInstance(FileSystemManager);
+
+ HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamFactory, GetDefaultUserAgent);
+ RegisterSingleInstance(HttpClient);
+
+ RegisterSingleInstance(NetworkManager);
+
+ IsoManager = new IsoManager();
+ RegisterSingleInstance(IsoManager);
+
+ TaskManager = new TaskManager(ApplicationPaths, JsonSerializer, LogManager.GetLogger("TaskManager"), FileSystemManager, SystemEvents);
+ RegisterSingleInstance(TaskManager);
+
+ RegisterSingleInstance(XmlSerializer);
+
+ ProcessFactory = new ProcessFactory();
+ RegisterSingleInstance(ProcessFactory);
+
+ TimerFactory = new TimerFactory();
+ RegisterSingleInstance(TimerFactory);
+
+ RegisterSingleInstance(CryptographyProvider);
+
+ SocketFactory = new SocketFactory(LogManager.GetLogger("SocketFactory"));
+ RegisterSingleInstance(SocketFactory);
RegisterSingleInstance(PowerManagement);
@@ -460,7 +892,7 @@ namespace Emby.Server.Implementations
StringExtensions.LocalizationManager = LocalizationManager;
RegisterSingleInstance(LocalizationManager);
- ITextEncoding textEncoding = new TextEncoding(FileSystemManager, LogManager.GetLogger("TextEncoding"), JsonSerializer);
+ ITextEncoding textEncoding = new TextEncoding.TextEncoding(FileSystemManager, LogManager.GetLogger("TextEncoding"), JsonSerializer);
RegisterSingleInstance(textEncoding);
Utilities.EncodingHelper = textEncoding;
RegisterSingleInstance(() => new BdInfoExaminer(FileSystemManager, textEncoding));
@@ -627,6 +1059,106 @@ namespace Emby.Server.Implementations
await ((UserManager)UserManager).Initialize().ConfigureAwait(false);
}
+ public static void LogEnvironmentInfo(ILogger logger, IApplicationPaths appPaths, bool isStartup)
+ {
+ logger.LogMultiline("Emby", LogSeverity.Info, GetBaseExceptionMessage(appPaths));
+ }
+
+ protected static StringBuilder GetBaseExceptionMessage(IApplicationPaths appPaths)
+ {
+ var builder = new StringBuilder();
+
+ builder.AppendLine(string.Format("Command line: {0}", string.Join(" ", Environment.GetCommandLineArgs())));
+
+ builder.AppendLine(string.Format("Operating system: {0}", Environment.OSVersion));
+ builder.AppendLine(string.Format("64-Bit OS: {0}", Environment.Is64BitOperatingSystem));
+ builder.AppendLine(string.Format("64-Bit Process: {0}", Environment.Is64BitProcess));
+
+ Type type = Type.GetType("Mono.Runtime");
+ if (type != null)
+ {
+ MethodInfo displayName = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
+ if (displayName != null)
+ {
+ builder.AppendLine("Mono: " + displayName.Invoke(null, null));
+ }
+ }
+
+ builder.AppendLine(string.Format("Processor count: {0}", Environment.ProcessorCount));
+ builder.AppendLine(string.Format("Program data path: {0}", appPaths.ProgramDataPath));
+ builder.AppendLine(string.Format("Application directory: {0}", appPaths.ProgramSystemPath));
+
+ return builder;
+ }
+
+ private void SetHttpLimit()
+ {
+ try
+ {
+ // Increase the max http request limit
+ ServicePointManager.DefaultConnectionLimit = Math.Max(96, ServicePointManager.DefaultConnectionLimit);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error setting http limit", ex);
+ }
+ }
+
+ ///
+ /// Installs the iso mounters.
+ ///
+ /// The cancellation token.
+ /// Task.
+ private async Task InstallIsoMounters(CancellationToken cancellationToken)
+ {
+ var list = new List();
+
+ foreach (var isoMounter in GetExports())
+ {
+ try
+ {
+ if (isoMounter.RequiresInstallation && !isoMounter.IsInstalled)
+ {
+ Logger.Info("Installing {0}", isoMounter.Name);
+
+ await isoMounter.Install(cancellationToken).ConfigureAwait(false);
+ }
+
+ list.Add(isoMounter);
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("{0} failed to load.", ex, isoMounter.Name);
+ }
+ }
+
+ IsoManager.AddParts(list);
+ }
+
+ private string GetDefaultUserAgent()
+ {
+ var name = FormatAttribute(Name);
+
+ return name + "/" + ApplicationVersion;
+ }
+
+ private string FormatAttribute(string str)
+ {
+ var arr = str.ToCharArray();
+
+ arr = Array.FindAll(arr, (c => (char.IsLetterOrDigit(c)
+ || char.IsWhiteSpace(c))));
+
+ var result = new string(arr);
+
+ if (string.IsNullOrWhiteSpace(result))
+ {
+ result = "Emby";
+ }
+
+ return result;
+ }
+
protected virtual bool SupportsDualModeSockets
{
get
@@ -889,7 +1421,7 @@ namespace Emby.Server.Implementations
///
/// Finds the parts.
///
- protected override void FindParts()
+ protected void FindParts()
{
if (!ServerConfigurationManager.Configuration.IsPortAuthorized)
{
@@ -900,7 +1432,8 @@ namespace Emby.Server.Implementations
RegisterModules();
- base.FindParts();
+ ConfigurationManager.AddParts(GetExports());
+ Plugins = GetExports().Select(LoadPlugin).Where(i => i != null).ToArray();
HttpServer.Init(GetExports(false));
@@ -937,6 +1470,104 @@ namespace Emby.Server.Implementations
SyncManager.AddParts(GetExports());
}
+ private IPlugin LoadPlugin(IPlugin plugin)
+ {
+ try
+ {
+ var assemblyPlugin = plugin as IPluginAssembly;
+
+ if (assemblyPlugin != null)
+ {
+ var assembly = plugin.GetType().Assembly;
+ var assemblyName = assembly.GetName();
+
+ var attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute), true)[0];
+ var assemblyId = new Guid(attribute.Value);
+
+ var assemblyFileName = assemblyName.Name + ".dll";
+ var assemblyFilePath = Path.Combine(ApplicationPaths.PluginsPath, assemblyFileName);
+
+ assemblyPlugin.SetAttributes(assemblyFilePath, assemblyFileName, assemblyName.Version, assemblyId);
+ }
+
+ var isFirstRun = !File.Exists(plugin.ConfigurationFilePath);
+ plugin.SetStartupInfo(isFirstRun, File.GetLastWriteTimeUtc, s => Directory.CreateDirectory(s));
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error loading plugin {0}", ex, plugin.GetType().FullName);
+ return null;
+ }
+
+ return plugin;
+ }
+
+ ///
+ /// Discovers the types.
+ ///
+ protected void DiscoverTypes()
+ {
+ FailedAssemblies.Clear();
+
+ var assemblies = GetComposablePartAssemblies().ToList();
+
+ foreach (var assembly in assemblies)
+ {
+ Logger.Info("Loading {0}", assembly.FullName);
+ }
+
+ AllConcreteTypes = assemblies
+ .SelectMany(GetTypes)
+ .Where(t => t.IsClass && !t.IsAbstract && !t.IsInterface && !t.IsGenericType)
+ .ToArray();
+ }
+
+ ///
+ /// Gets a list of types within an assembly
+ /// This will handle situations that would normally throw an exception - such as a type within the assembly that depends on some other non-existant reference
+ ///
+ /// The assembly.
+ /// IEnumerable{Type}.
+ /// assembly
+ protected List GetTypes(Assembly assembly)
+ {
+ if (assembly == null)
+ {
+ return new List();
+ }
+
+ try
+ {
+ // This null checking really shouldn't be needed but adding it due to some
+ // unhandled exceptions in mono 5.0 that are a little hard to hunt down
+ var types = assembly.GetTypes() ?? new Type[] { };
+ return types.Where(t => t != null).ToList();
+ }
+ catch (ReflectionTypeLoadException ex)
+ {
+ if (ex.LoaderExceptions != null)
+ {
+ foreach (var loaderException in ex.LoaderExceptions)
+ {
+ if (loaderException != null)
+ {
+ Logger.Error("LoaderException: " + loaderException.Message);
+ }
+ }
+ }
+
+ // If it fails we can still get a list of the Types it was able to resolve
+ var types = ex.Types ?? new Type[] { };
+ return types.Where(t => t != null).ToList();
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error loading types from assembly", ex);
+
+ return new List();
+ }
+ }
+
private CertificateInfo CertificateInfo { get; set; }
private ICertificate Certificate { get; set; }
@@ -1043,9 +1674,9 @@ namespace Emby.Server.Implementations
///
/// The sender.
/// The instance containing the event data.
- protected override void OnConfigurationUpdated(object sender, EventArgs e)
+ protected void OnConfigurationUpdated(object sender, EventArgs e)
{
- base.OnConfigurationUpdated(sender, e);
+ ConfigureAutorun();
var requiresRestart = false;
@@ -1088,10 +1719,27 @@ namespace Emby.Server.Implementations
}
}
+ ///
+ /// Notifies that the kernel that a change has been made that requires a restart
+ ///
+ public void NotifyPendingRestart()
+ {
+ Logger.Info("App needs to be restarted.");
+
+ var changed = !HasPendingRestart;
+
+ HasPendingRestart = true;
+
+ if (changed)
+ {
+ EventHelper.QueueEventIfNotNull(HasPendingRestartChanged, this, EventArgs.Empty, Logger);
+ }
+ }
+
///
/// Restarts this instance.
///
- public override async Task Restart()
+ public async Task Restart()
{
if (!CanSelfRestart)
{
@@ -1118,7 +1766,7 @@ namespace Emby.Server.Implementations
/// Gets the composable part assemblies.
///
/// IEnumerable{Assembly}.
- protected override IEnumerable GetComposablePartAssemblies()
+ protected IEnumerable GetComposablePartAssemblies()
{
var list = GetPluginAssemblies()
.ToList();
@@ -1442,7 +2090,7 @@ namespace Emby.Server.Implementations
///
/// Shuts down.
///
- public override async Task Shutdown()
+ public async Task Shutdown()
{
try
{
@@ -1503,13 +2151,24 @@ namespace Emby.Server.Implementations
}
}
+ ///
+ /// Removes the plugin.
+ ///
+ /// The plugin.
+ public void RemovePlugin(IPlugin plugin)
+ {
+ var list = Plugins.ToList();
+ list.Remove(plugin);
+ Plugins = list.ToArray();
+ }
+
///
/// Checks for update.
///
/// The cancellation token.
/// The progress.
/// Task{CheckForUpdateResult}.
- public override async Task CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress progress)
+ public async Task CheckForApplicationUpdate(CancellationToken cancellationToken, IProgress progress)
{
var cacheLength = TimeSpan.FromHours(1);
var updateLevel = SystemUpdateLevel;
@@ -1533,7 +2192,7 @@ namespace Emby.Server.Implementations
/// The package that contains the update
/// The cancellation token.
/// The progress.
- public override async Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress progress)
+ public async Task UpdateApplication(PackageVersionInfo package, CancellationToken cancellationToken, IProgress progress)
{
await InstallationManager.InstallPackage(package, false, progress, cancellationToken).ConfigureAwait(false);
@@ -1546,7 +2205,7 @@ namespace Emby.Server.Implementations
/// Configures the automatic run at startup.
///
/// if set to true [autorun].
- protected override void ConfigureAutoRunAtStartup(bool autorun)
+ protected void ConfigureAutoRunAtStartup(bool autorun)
{
if (SupportsAutoRunAtStartup)
{
@@ -1641,6 +2300,62 @@ namespace Emby.Server.Implementations
}
}
+ ///
+ /// Called when [application updated].
+ ///
+ /// The package.
+ protected void OnApplicationUpdated(PackageVersionInfo package)
+ {
+ Logger.Info("Application has been updated to version {0}", package.versionStr);
+
+ EventHelper.FireEventIfNotNull(ApplicationUpdated, this, new GenericEventArgs
+ {
+ Argument = package
+
+ }, Logger);
+
+ NotifyPendingRestart();
+ }
+
+ ///
+ /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+ ///
+ public void Dispose()
+ {
+ Dispose(true);
+ }
+
+ ///
+ /// Releases unmanaged and - optionally - managed resources.
+ ///
+ /// true to release both managed and unmanaged resources; false to release only unmanaged resources.
+ protected virtual void Dispose(bool dispose)
+ {
+ if (dispose)
+ {
+ var type = GetType();
+
+ Logger.Info("Disposing " + type.Name);
+
+ var parts = DisposableParts.Distinct().Where(i => i.GetType() != type).ToList();
+ DisposableParts.Clear();
+
+ foreach (var part in parts)
+ {
+ Logger.Info("Disposing " + part.GetType().Name);
+
+ try
+ {
+ part.Dispose();
+ }
+ catch (Exception ex)
+ {
+ Logger.ErrorException("Error disposing {0}", ex, part.GetType().Name);
+ }
+ }
+ }
+ }
+
void IDependencyContainer.RegisterSingleInstance(T obj, bool manageLifetime)
{
RegisterSingleInstance(obj, manageLifetime);
diff --git a/Emby.Common.Implementations/Archiving/ZipClient.cs b/Emby.Server.Implementations/Archiving/ZipClient.cs
similarity index 98%
rename from Emby.Common.Implementations/Archiving/ZipClient.cs
rename to Emby.Server.Implementations/Archiving/ZipClient.cs
index 791c6678cd..3218d56c63 100644
--- a/Emby.Common.Implementations/Archiving/ZipClient.cs
+++ b/Emby.Server.Implementations/Archiving/ZipClient.cs
@@ -3,11 +3,10 @@ using MediaBrowser.Model.IO;
using SharpCompress.Archives.Rar;
using SharpCompress.Archives.SevenZip;
using SharpCompress.Archives.Tar;
-using SharpCompress.Common;
using SharpCompress.Readers;
using SharpCompress.Readers.Zip;
-namespace Emby.Common.Implementations.Archiving
+namespace Emby.Server.Implementations.Archiving
{
///
/// Class DotNetZipClient
diff --git a/Emby.Common.Implementations/Cryptography/CryptographyProvider.cs b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
similarity index 94%
rename from Emby.Common.Implementations/Cryptography/CryptographyProvider.cs
rename to Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
index 01a31bcc03..6402da0c99 100644
--- a/Emby.Common.Implementations/Cryptography/CryptographyProvider.cs
+++ b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
@@ -4,7 +4,7 @@ using System.Security.Cryptography;
using System.Text;
using MediaBrowser.Model.Cryptography;
-namespace Emby.Common.Implementations.Cryptography
+namespace Emby.Server.Implementations.Cryptography
{
public class CryptographyProvider : ICryptoProvider
{
diff --git a/Emby.Common.Implementations/Devices/DeviceId.cs b/Emby.Server.Implementations/Devices/DeviceId.cs
similarity index 98%
rename from Emby.Common.Implementations/Devices/DeviceId.cs
rename to Emby.Server.Implementations/Devices/DeviceId.cs
index 1de76456cc..5e0323ddb4 100644
--- a/Emby.Common.Implementations/Devices/DeviceId.cs
+++ b/Emby.Server.Implementations/Devices/DeviceId.cs
@@ -5,7 +5,7 @@ using MediaBrowser.Common.Configuration;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
-namespace Emby.Common.Implementations.Devices
+namespace Emby.Server.Implementations.Devices
{
public class DeviceId
{
diff --git a/Emby.Common.Implementations/Diagnostics/CommonProcess.cs b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs
similarity index 96%
rename from Emby.Common.Implementations/Diagnostics/CommonProcess.cs
rename to Emby.Server.Implementations/Diagnostics/CommonProcess.cs
index afd30bc47f..09b8bf22cd 100644
--- a/Emby.Common.Implementations/Diagnostics/CommonProcess.cs
+++ b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs
@@ -1,12 +1,10 @@
using System;
-using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
using MediaBrowser.Model.Diagnostics;
-namespace Emby.Common.Implementations.Diagnostics
+namespace Emby.Server.Implementations.Diagnostics
{
public class CommonProcess : IProcess
{
diff --git a/Emby.Common.Implementations/Diagnostics/ProcessFactory.cs b/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs
similarity index 82%
rename from Emby.Common.Implementations/Diagnostics/ProcessFactory.cs
rename to Emby.Server.Implementations/Diagnostics/ProcessFactory.cs
index 292da023c7..a2c511cb97 100644
--- a/Emby.Common.Implementations/Diagnostics/ProcessFactory.cs
+++ b/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs
@@ -1,6 +1,6 @@
using MediaBrowser.Model.Diagnostics;
-namespace Emby.Common.Implementations.Diagnostics
+namespace Emby.Server.Implementations.Diagnostics
{
public class ProcessFactory : IProcessFactory
{
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index 38f51919a8..891d9cfc43 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -44,6 +44,7 @@
+
@@ -61,6 +62,7 @@
+
@@ -81,8 +83,11 @@
+
+
+
@@ -98,9 +103,12 @@
+
+
+
@@ -123,9 +131,237 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -198,9 +434,17 @@
+
+
+
+
+
+
+
+
@@ -219,16 +463,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -277,21 +534,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- {1e37a338-9f57-4b70-bd6d-bb9c591e319b}
- Emby.Common.Implementations
-
{805844ab-e92f-45e6-9d99-4f6d48d129a5}
Emby.Dlna
@@ -366,10 +674,16 @@
..\packages\Microsoft.IO.RecyclableMemoryStream.1.2.2\lib\net45\Microsoft.IO.RecyclableMemoryStream.dll
+
+ ..\packages\NLog.4.4.12\lib\net45\NLog.dll
+
..\packages\ServiceStack.Text.4.5.8\lib\net45\ServiceStack.Text.dll
True
+
+ ..\packages\SharpCompress.0.14.0\lib\net45\SharpCompress.dll
+
..\packages\SimpleInjector.4.0.8\lib\net45\SimpleInjector.dll
@@ -436,6 +750,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs b/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs
similarity index 93%
rename from Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs
rename to Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs
index 89aa787b56..0999fa1418 100644
--- a/Emby.Common.Implementations/EnvironmentInfo/EnvironmentInfo.cs
+++ b/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs
@@ -1,12 +1,8 @@
using System;
-using System.Collections.Generic;
using System.IO;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Threading.Tasks;
using MediaBrowser.Model.System;
-namespace Emby.Common.Implementations.EnvironmentInfo
+namespace Emby.Server.Implementations.EnvironmentInfo
{
public class EnvironmentInfo : IEnvironmentInfo
{
diff --git a/Emby.Common.Implementations/HttpClientManager/HttpClientInfo.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs
similarity index 84%
rename from Emby.Common.Implementations/HttpClientManager/HttpClientInfo.cs
rename to Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs
index ca481b33e7..6d17bf94de 100644
--- a/Emby.Common.Implementations/HttpClientManager/HttpClientInfo.cs
+++ b/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs
@@ -1,6 +1,6 @@
using System;
-namespace Emby.Common.Implementations.HttpClientManager
+namespace Emby.Server.Implementations.HttpClientManager
{
///
/// Class HttpClientInfo
diff --git a/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
similarity index 99%
rename from Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs
rename to Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
index 700d04c4d3..1017953ba7 100644
--- a/Emby.Common.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
@@ -1,26 +1,23 @@
-using System.Net.Sockets;
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Net;
-using System;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
-using System.Collections.Specialized;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
+using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using Emby.Common.Implementations.HttpClientManager;
-using Emby.Common.Implementations.IO;
+using Emby.Server.Implementations.IO;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.Net;
using MediaBrowser.Model.IO;
-using MediaBrowser.Common;
+using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Net;
-namespace Emby.Common.Implementations.HttpClientManager
+namespace Emby.Server.Implementations.HttpClientManager
{
///
/// Class HttpClientManager
diff --git a/Emby.Server.Implementations/HttpServerFactory.cs b/Emby.Server.Implementations/HttpServerFactory.cs
index b1d78e6f42..007f5c8293 100644
--- a/Emby.Server.Implementations/HttpServerFactory.cs
+++ b/Emby.Server.Implementations/HttpServerFactory.cs
@@ -3,8 +3,8 @@ using System.IO;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
-using Emby.Common.Implementations.Net;
using Emby.Server.Implementations.HttpServer;
+using Emby.Server.Implementations.Net;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
diff --git a/Emby.Common.Implementations/IO/IsoManager.cs b/Emby.Server.Implementations/IO/IsoManager.cs
similarity index 98%
rename from Emby.Common.Implementations/IO/IsoManager.cs
rename to Emby.Server.Implementations/IO/IsoManager.cs
index 14614acaf8..903d5f301f 100644
--- a/Emby.Common.Implementations/IO/IsoManager.cs
+++ b/Emby.Server.Implementations/IO/IsoManager.cs
@@ -5,7 +5,7 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
-namespace Emby.Common.Implementations.IO
+namespace Emby.Server.Implementations.IO
{
///
/// Class IsoManager
diff --git a/Emby.Common.Implementations/IO/LnkShortcutHandler.cs b/Emby.Server.Implementations/IO/LnkShortcutHandler.cs
similarity index 99%
rename from Emby.Common.Implementations/IO/LnkShortcutHandler.cs
rename to Emby.Server.Implementations/IO/LnkShortcutHandler.cs
index 5d5f460574..093d57aa45 100644
--- a/Emby.Common.Implementations/IO/LnkShortcutHandler.cs
+++ b/Emby.Server.Implementations/IO/LnkShortcutHandler.cs
@@ -2,11 +2,10 @@
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
-using System.Security;
using System.Text;
using MediaBrowser.Model.IO;
-namespace Emby.Common.Implementations.IO
+namespace Emby.Server.Implementations.IO
{
public class LnkShortcutHandler :IShortcutHandler
{
diff --git a/Emby.Common.Implementations/IO/ManagedFileSystem.cs b/Emby.Server.Implementations/IO/ManagedFileSystem.cs
similarity index 99%
rename from Emby.Common.Implementations/IO/ManagedFileSystem.cs
rename to Emby.Server.Implementations/IO/ManagedFileSystem.cs
index 7d14e521f3..0d85a977c5 100644
--- a/Emby.Common.Implementations/IO/ManagedFileSystem.cs
+++ b/Emby.Server.Implementations/IO/ManagedFileSystem.cs
@@ -7,7 +7,7 @@ using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.System;
-namespace Emby.Common.Implementations.IO
+namespace Emby.Server.Implementations.IO
{
///
/// Class ManagedFileSystem
diff --git a/Emby.Common.Implementations/IO/ProgressStream.cs b/Emby.Server.Implementations/IO/ProgressStream.cs
similarity index 99%
rename from Emby.Common.Implementations/IO/ProgressStream.cs
rename to Emby.Server.Implementations/IO/ProgressStream.cs
index fb8cf86dfc..be1ff72f8e 100644
--- a/Emby.Common.Implementations/IO/ProgressStream.cs
+++ b/Emby.Server.Implementations/IO/ProgressStream.cs
@@ -1,7 +1,7 @@
using System;
using System.IO;
-namespace Emby.Common.Implementations.IO
+namespace Emby.Server.Implementations.IO
{
///
/// Measures progress when reading from a stream or writing to one
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Config.cs b/Emby.Server.Implementations/IO/SharpCifs/Config.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Config.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Config.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcBind.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcBind.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcBind.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcBind.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcBinding.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcBinding.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcBinding.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcBinding.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcConstants.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcConstants.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcConstants.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcConstants.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcError.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcError.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcError.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcError.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcException.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcException.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcException.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcException.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcHandle.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcHandle.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcHandle.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcHandle.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcMessage.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcMessage.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcMessage.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcMessage.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcPipeHandle.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcPipeHandle.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcPipeHandle.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcPipeHandle.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcSecurityProvider.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcSecurityProvider.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/DcerpcSecurityProvider.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/DcerpcSecurityProvider.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsaPolicyHandle.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsaPolicyHandle.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsaPolicyHandle.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsaPolicyHandle.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsarSidArrayX.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsarSidArrayX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsarSidArrayX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/LsarSidArrayX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Lsarpc.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Lsarpc.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Lsarpc.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Lsarpc.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcDfsRootEnum.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcDfsRootEnum.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcDfsRootEnum.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcDfsRootEnum.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcEnumerateAliasesInDomain.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcEnumerateAliasesInDomain.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcEnumerateAliasesInDomain.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcEnumerateAliasesInDomain.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcGetMembersInAlias.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcGetMembersInAlias.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcGetMembersInAlias.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcGetMembersInAlias.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLookupSids.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLookupSids.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLookupSids.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLookupSids.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLsarOpenPolicy2.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLsarOpenPolicy2.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLsarOpenPolicy2.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcLsarOpenPolicy2.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcQueryInformationPolicy.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcQueryInformationPolicy.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcQueryInformationPolicy.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcQueryInformationPolicy.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect2.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect2.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect2.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect2.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect4.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect4.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect4.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrConnect4.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenAlias.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenAlias.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenAlias.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenAlias.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenDomain.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenDomain.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenDomain.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcSamrOpenDomain.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareEnum.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareEnum.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareEnum.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareEnum.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareGetInfo.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareGetInfo.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareGetInfo.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/MsrpcShareGetInfo.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Netdfs.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Netdfs.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Netdfs.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Netdfs.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Samr.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Samr.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Samr.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Samr.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrAliasHandle.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrAliasHandle.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrAliasHandle.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrAliasHandle.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrDomainHandle.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrDomainHandle.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrDomainHandle.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrDomainHandle.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrPolicyHandle.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrPolicyHandle.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrPolicyHandle.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/SamrPolicyHandle.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Srvsvc.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Srvsvc.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Srvsvc.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Srvsvc.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrBuffer.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrBuffer.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrBuffer.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrBuffer.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrException.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrException.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrException.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrException.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrHyper.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrHyper.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrHyper.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrHyper.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrLong.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrLong.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrLong.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrLong.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrObject.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrObject.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrObject.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrObject.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrShort.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrShort.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrShort.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrShort.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrSmall.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrSmall.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrSmall.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Ndr/NdrSmall.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Rpc.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Rpc.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/Rpc.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Rpc.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/UUID.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/UUID.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/UUID.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/UUID.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Dcerpc/UnicodeString.cs b/Emby.Server.Implementations/IO/SharpCifs/Dcerpc/UnicodeString.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Dcerpc/UnicodeString.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Dcerpc/UnicodeString.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/Lmhosts.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/Lmhosts.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/Lmhosts.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/Lmhosts.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/Name.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/Name.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/Name.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/Name.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NameQueryRequest.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NameQueryRequest.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NameQueryRequest.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NameQueryRequest.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NameQueryResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NameQueryResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NameQueryResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NameQueryResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NameServiceClient.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NameServiceClient.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NameServiceClient.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NameServiceClient.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NameServicePacket.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NameServicePacket.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NameServicePacket.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NameServicePacket.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NbtAddress.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NbtAddress.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NbtAddress.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NbtAddress.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NbtException.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NbtException.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NbtException.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NbtException.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NodeStatusRequest.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NodeStatusRequest.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NodeStatusRequest.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NodeStatusRequest.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/NodeStatusResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/NodeStatusResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/NodeStatusResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/NodeStatusResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/SessionRequestPacket.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/SessionRequestPacket.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/SessionRequestPacket.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/SessionRequestPacket.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/SessionRetargetResponsePacket.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/SessionRetargetResponsePacket.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/SessionRetargetResponsePacket.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/SessionRetargetResponsePacket.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Netbios/SessionServicePacket.cs b/Emby.Server.Implementations/IO/SharpCifs/Netbios/SessionServicePacket.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Netbios/SessionServicePacket.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Netbios/SessionServicePacket.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/NtlmFlags.cs b/Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/NtlmFlags.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/NtlmFlags.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/NtlmFlags.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/NtlmMessage.cs b/Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/NtlmMessage.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/NtlmMessage.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/NtlmMessage.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/Type1Message.cs b/Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/Type1Message.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/Type1Message.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/Type1Message.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/Type2Message.cs b/Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/Type2Message.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/Type2Message.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/Type2Message.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/Type3Message.cs b/Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/Type3Message.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Ntlmssp/Type3Message.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Ntlmssp/Type3Message.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/ACE.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/ACE.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/ACE.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/ACE.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/AllocInfo.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/AllocInfo.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/AllocInfo.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/AllocInfo.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/AndXServerMessageBlock.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/AndXServerMessageBlock.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/AndXServerMessageBlock.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/AndXServerMessageBlock.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/BufferCache.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/BufferCache.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/BufferCache.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/BufferCache.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Dfs.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Dfs.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Dfs.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Dfs.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/DfsReferral.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/DfsReferral.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/DfsReferral.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/DfsReferral.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/DosError.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/DosError.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/DosError.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/DosError.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/DosFileFilter.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/DosFileFilter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/DosFileFilter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/DosFileFilter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/FileEntry.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/FileEntry.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/FileEntry.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/FileEntry.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/IInfo.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/IInfo.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/IInfo.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/IInfo.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NetServerEnum2.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NetServerEnum2.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NetServerEnum2.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NetServerEnum2.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NetServerEnum2Response.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NetServerEnum2Response.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NetServerEnum2Response.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NetServerEnum2Response.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NetShareEnum.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NetShareEnum.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NetShareEnum.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NetShareEnum.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NetShareEnumResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NetShareEnumResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NetShareEnumResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NetShareEnumResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NtStatus.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NtStatus.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NtStatus.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NtStatus.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDesc.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDesc.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDesc.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDesc.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDescResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDescResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDescResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NtTransQuerySecurityDescResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmAuthenticator.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmAuthenticator.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmAuthenticator.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmAuthenticator.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmChallenge.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmChallenge.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmChallenge.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmChallenge.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmContext.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmContext.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmContext.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmContext.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmPasswordAuthentication.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmPasswordAuthentication.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/NtlmPasswordAuthentication.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/NtlmPasswordAuthentication.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Principal.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Principal.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Principal.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Principal.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SID.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SID.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SID.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SID.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SecurityDescriptor.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SecurityDescriptor.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SecurityDescriptor.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SecurityDescriptor.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/ServerMessageBlock.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/ServerMessageBlock.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/ServerMessageBlock.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/ServerMessageBlock.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SigningDigest.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SigningDigest.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SigningDigest.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SigningDigest.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbAuthException.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbAuthException.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbAuthException.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbAuthException.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComBlankResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComBlankResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComBlankResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComBlankResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComClose.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComClose.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComClose.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComClose.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComCreateDirectory.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComCreateDirectory.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComCreateDirectory.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComCreateDirectory.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComDelete.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComDelete.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComDelete.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComDelete.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComDeleteDirectory.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComDeleteDirectory.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComDeleteDirectory.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComDeleteDirectory.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComFindClose2.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComFindClose2.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComFindClose2.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComFindClose2.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComLogoffAndX.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComLogoffAndX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComLogoffAndX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComLogoffAndX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndX.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndXResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndXResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndXResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNTCreateAndXResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNegotiate.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNegotiate.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNegotiate.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNegotiate.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNegotiateResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNegotiateResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNegotiateResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNegotiateResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNtTransaction.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNtTransaction.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNtTransaction.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNtTransaction.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNtTransactionResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNtTransactionResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComNtTransactionResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComNtTransactionResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComOpenAndX.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComOpenAndX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComOpenAndX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComOpenAndX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComOpenAndXResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComOpenAndXResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComOpenAndXResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComOpenAndXResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComQueryInformation.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComQueryInformation.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComQueryInformation.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComQueryInformation.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComQueryInformationResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComQueryInformationResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComQueryInformationResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComQueryInformationResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComReadAndX.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComReadAndX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComReadAndX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComReadAndX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComReadAndXResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComReadAndXResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComReadAndXResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComReadAndXResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComRename.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComRename.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComRename.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComRename.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndX.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndXResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndXResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndXResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComSessionSetupAndXResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTransaction.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTransaction.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTransaction.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTransaction.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTransactionResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTransactionResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTransactionResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTransactionResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndX.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndXResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndXResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndXResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTreeConnectAndXResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTreeDisconnect.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTreeDisconnect.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComTreeDisconnect.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComTreeDisconnect.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWrite.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWrite.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWrite.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWrite.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWriteAndX.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWriteAndX.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWriteAndX.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWriteAndX.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWriteAndXResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWriteAndXResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWriteAndXResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWriteAndXResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWriteResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWriteResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbComWriteResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbComWriteResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbConstants.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbConstants.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbConstants.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbConstants.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbException.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbException.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbException.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbException.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFile.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFile.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFile.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFile.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileExtensions.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileExtensions.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileExtensions.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileExtensions.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileFilter.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileFilter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileFilter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileFilter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileInputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileInputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileInputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileInputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileOutputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileOutputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFileOutputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFileOutputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFilenameFilter.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFilenameFilter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbFilenameFilter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbFilenameFilter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbNamedPipe.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbNamedPipe.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbNamedPipe.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbNamedPipe.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbRandomAccessFile.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbRandomAccessFile.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbRandomAccessFile.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbRandomAccessFile.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbSession.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbSession.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbSession.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbSession.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbShareInfo.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbShareInfo.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbShareInfo.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbShareInfo.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbTransport.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbTransport.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbTransport.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbTransport.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/SmbTree.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/SmbTree.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/SmbTree.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/SmbTree.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2Response.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2Response.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2Response.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2FindFirst2Response.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2FindNext2.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2FindNext2.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2FindNext2.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2FindNext2.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferral.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferral.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferral.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferral.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferralResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferralResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferralResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2GetDfsReferralResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformation.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformation.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformation.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformation.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformationResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformationResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformationResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryFSInformationResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformation.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformation.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformation.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformation.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2QueryPathInformationResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformation.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformation.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformation.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformation.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformationResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformationResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformationResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/Trans2SetFileInformationResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransCallNamedPipe.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransCallNamedPipe.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransCallNamedPipe.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransCallNamedPipe.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransCallNamedPipeResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransCallNamedPipeResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransCallNamedPipeResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransCallNamedPipeResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipe.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipe.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipe.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipe.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipeResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipeResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipeResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransPeekNamedPipeResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipe.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipe.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipe.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipe.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipeResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipeResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipeResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransTransactNamedPipeResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipe.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipe.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipe.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipe.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipeResponse.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipeResponse.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipeResponse.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransWaitNamedPipeResponse.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransactNamedPipeInputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransactNamedPipeInputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransactNamedPipeInputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransactNamedPipeInputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/TransactNamedPipeOutputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/TransactNamedPipeOutputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/TransactNamedPipeOutputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/TransactNamedPipeOutputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Smb/WinError.cs b/Emby.Server.Implementations/IO/SharpCifs/Smb/WinError.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Smb/WinError.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Smb/WinError.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/UniAddress.cs b/Emby.Server.Implementations/IO/SharpCifs/UniAddress.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/UniAddress.cs
rename to Emby.Server.Implementations/IO/SharpCifs/UniAddress.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Base64.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Base64.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Base64.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Base64.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/DES.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/DES.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/DES.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/DES.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Encdec.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Encdec.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Encdec.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Encdec.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/HMACT64.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/HMACT64.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/HMACT64.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/HMACT64.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Hexdump.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Hexdump.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Hexdump.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Hexdump.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/LogStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/LogStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/LogStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/LogStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/MD4.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/MD4.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/MD4.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/MD4.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/RC4.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/RC4.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/RC4.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/RC4.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/AbstractMap.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/AbstractMap.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/AbstractMap.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/AbstractMap.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Arrays.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Arrays.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Arrays.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Arrays.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/BufferedReader.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/BufferedReader.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/BufferedReader.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/BufferedReader.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/BufferedWriter.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/BufferedWriter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/BufferedWriter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/BufferedWriter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/CharBuffer.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/CharBuffer.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/CharBuffer.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/CharBuffer.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/CharSequence.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/CharSequence.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/CharSequence.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/CharSequence.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Collections.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Collections.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Collections.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Collections.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ConcurrentHashMap.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ConcurrentHashMap.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ConcurrentHashMap.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ConcurrentHashMap.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/DateFormat.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/DateFormat.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/DateFormat.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/DateFormat.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/EnumeratorWrapper.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/EnumeratorWrapper.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/EnumeratorWrapper.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/EnumeratorWrapper.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Exceptions.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Exceptions.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Exceptions.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Exceptions.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Extensions.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Extensions.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Extensions.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Extensions.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileInputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileInputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileInputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileInputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileOutputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileOutputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileOutputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileOutputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FilePath.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FilePath.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FilePath.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FilePath.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileReader.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileReader.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileReader.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileReader.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileWriter.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileWriter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FileWriter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FileWriter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FilterInputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FilterInputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FilterInputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FilterInputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FilterOutputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FilterOutputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/FilterOutputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/FilterOutputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Hashtable.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Hashtable.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Hashtable.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Hashtable.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/HttpURLConnection.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/HttpURLConnection.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/HttpURLConnection.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/HttpURLConnection.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ICallable.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ICallable.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ICallable.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ICallable.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IConcurrentMap.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IConcurrentMap.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IConcurrentMap.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IConcurrentMap.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IExecutor.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IExecutor.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IExecutor.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IExecutor.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IFilenameFilter.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IFilenameFilter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IFilenameFilter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IFilenameFilter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IFuture.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IFuture.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IFuture.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IFuture.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IPrivilegedAction.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IPrivilegedAction.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IPrivilegedAction.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IPrivilegedAction.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IRunnable.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IRunnable.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/IRunnable.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/IRunnable.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/InputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStreamReader.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/InputStreamReader.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/InputStreamReader.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/InputStreamReader.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Iterator.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Iterator.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Iterator.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Iterator.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/LinkageError.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/LinkageError.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/LinkageError.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/LinkageError.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/MD5.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/MD5.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/MD5.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/MD5.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/MD5Managed.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/MD5Managed.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/MD5Managed.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/MD5Managed.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/MessageDigest.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/MessageDigest.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/MessageDigest.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/MessageDigest.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/NetworkStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/NetworkStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/NetworkStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/NetworkStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ObjectInputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ObjectInputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ObjectInputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ObjectInputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ObjectOutputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ObjectOutputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ObjectOutputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ObjectOutputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/OutputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStreamWriter.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/OutputStreamWriter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/OutputStreamWriter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/OutputStreamWriter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/PipedInputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/PipedInputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/PipedInputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/PipedInputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/PipedOutputStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/PipedOutputStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/PipedOutputStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/PipedOutputStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/PrintWriter.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/PrintWriter.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/PrintWriter.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/PrintWriter.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Properties.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Properties.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Properties.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Properties.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/RandomAccessFile.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ReentrantLock.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ReentrantLock.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ReentrantLock.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ReentrantLock.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Reference.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Reference.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Reference.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Reference.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Runtime.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Runtime.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Runtime.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Runtime.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/SimpleDateFormat.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/SimpleDateFormat.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/SimpleDateFormat.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/SimpleDateFormat.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/SocketEx.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/SocketEx.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/SocketEx.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/SocketEx.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/StringTokenizer.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/StringTokenizer.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/StringTokenizer.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/StringTokenizer.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/SynchronizedList.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/SynchronizedList.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/SynchronizedList.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/SynchronizedList.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Thread.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Thread.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/Thread.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Thread.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ThreadFactory.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ThreadFactory.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ThreadFactory.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ThreadFactory.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ThreadPoolExecutor.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ThreadPoolExecutor.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/ThreadPoolExecutor.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/ThreadPoolExecutor.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/WrappedSystemStream.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/WrappedSystemStream.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Sharpen/WrappedSystemStream.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/WrappedSystemStream.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Transport/Request.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Transport/Request.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Transport/Request.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Transport/Request.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Transport/Response.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Transport/Response.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Transport/Response.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Transport/Response.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Transport/Transport.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Transport/Transport.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Transport/Transport.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Transport/Transport.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifs/Util/Transport/TransportException.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Transport/TransportException.cs
similarity index 100%
rename from Emby.Common.Implementations/IO/SharpCifs/Util/Transport/TransportException.cs
rename to Emby.Server.Implementations/IO/SharpCifs/Util/Transport/TransportException.cs
diff --git a/Emby.Common.Implementations/IO/SharpCifsFileSystem.cs b/Emby.Server.Implementations/IO/SharpCifsFileSystem.cs
similarity index 99%
rename from Emby.Common.Implementations/IO/SharpCifsFileSystem.cs
rename to Emby.Server.Implementations/IO/SharpCifsFileSystem.cs
index 64cac76230..1d21796b1a 100644
--- a/Emby.Common.Implementations/IO/SharpCifsFileSystem.cs
+++ b/Emby.Server.Implementations/IO/SharpCifsFileSystem.cs
@@ -3,13 +3,10 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
-using System.Threading.Tasks;
-using SharpCifs.Smb;
using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.System;
+using SharpCifs.Smb;
-namespace Emby.Common.Implementations.IO
+namespace Emby.Server.Implementations.IO
{
public class SharpCifsFileSystem
{
diff --git a/Emby.Common.Implementations/Logging/NLogger.cs b/Emby.Server.Implementations/Logging/NLogger.cs
similarity index 98%
rename from Emby.Common.Implementations/Logging/NLogger.cs
rename to Emby.Server.Implementations/Logging/NLogger.cs
index 8abd3d0d92..c380a640f3 100644
--- a/Emby.Common.Implementations/Logging/NLogger.cs
+++ b/Emby.Server.Implementations/Logging/NLogger.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Model.Logging;
-using System;
+using System;
using System.Text;
+using MediaBrowser.Model.Logging;
-namespace Emby.Common.Implementations.Logging
+namespace Emby.Server.Implementations.Logging
{
///
/// Class NLogger
diff --git a/Emby.Common.Implementations/Logging/NlogManager.cs b/Emby.Server.Implementations/Logging/NlogManager.cs
similarity index 99%
rename from Emby.Common.Implementations/Logging/NlogManager.cs
rename to Emby.Server.Implementations/Logging/NlogManager.cs
index 4446e2cdb9..77f8d02970 100644
--- a/Emby.Common.Implementations/Logging/NlogManager.cs
+++ b/Emby.Server.Implementations/Logging/NlogManager.cs
@@ -1,15 +1,14 @@
using System;
using System.IO;
using System.Linq;
-using System.Xml;
+using MediaBrowser.Model.Logging;
using NLog;
using NLog.Config;
using NLog.Filters;
using NLog.Targets;
using NLog.Targets.Wrappers;
-using MediaBrowser.Model.Logging;
-namespace Emby.Common.Implementations.Logging
+namespace Emby.Server.Implementations.Logging
{
///
/// Class NlogManager
diff --git a/Emby.Common.Implementations/Net/DisposableManagedObjectBase.cs b/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs
similarity index 94%
rename from Emby.Common.Implementations/Net/DisposableManagedObjectBase.cs
rename to Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs
index 8476cea326..b18335da77 100644
--- a/Emby.Common.Implementations/Net/DisposableManagedObjectBase.cs
+++ b/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs
@@ -1,9 +1,6 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-namespace Emby.Common.Implementations.Net
+namespace Emby.Server.Implementations.Net
{
///
/// Correclty implements the interface and pattern for an object containing only managed resources, and adds a few common niceities not on the interface such as an property.
diff --git a/Emby.Common.Implementations/Net/NetAcceptSocket.cs b/Emby.Server.Implementations/Net/NetAcceptSocket.cs
similarity index 98%
rename from Emby.Common.Implementations/Net/NetAcceptSocket.cs
rename to Emby.Server.Implementations/Net/NetAcceptSocket.cs
index 5e831ac7ab..936a66c0b0 100644
--- a/Emby.Common.Implementations/Net/NetAcceptSocket.cs
+++ b/Emby.Server.Implementations/Net/NetAcceptSocket.cs
@@ -3,11 +3,11 @@ using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
-using Emby.Common.Implementations.Networking;
-using MediaBrowser.Model.Net;
+using Emby.Server.Implementations.Networking;
using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Net;
-namespace Emby.Common.Implementations.Net
+namespace Emby.Server.Implementations.Net
{
public class NetAcceptSocket : IAcceptSocket
{
diff --git a/Emby.Common.Implementations/Net/SocketAcceptor.cs b/Emby.Server.Implementations/Net/SocketAcceptor.cs
similarity index 98%
rename from Emby.Common.Implementations/Net/SocketAcceptor.cs
rename to Emby.Server.Implementations/Net/SocketAcceptor.cs
index 11a8e53815..288ba93adb 100644
--- a/Emby.Common.Implementations/Net/SocketAcceptor.cs
+++ b/Emby.Server.Implementations/Net/SocketAcceptor.cs
@@ -3,7 +3,7 @@ using System.Net.Sockets;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
-namespace Emby.Common.Implementations.Net
+namespace Emby.Server.Implementations.Net
{
public class SocketAcceptor
{
diff --git a/Emby.Common.Implementations/Net/SocketFactory.cs b/Emby.Server.Implementations/Net/SocketFactory.cs
similarity index 98%
rename from Emby.Common.Implementations/Net/SocketFactory.cs
rename to Emby.Server.Implementations/Net/SocketFactory.cs
index 0a1232a400..ab3bd0b315 100644
--- a/Emby.Common.Implementations/Net/SocketFactory.cs
+++ b/Emby.Server.Implementations/Net/SocketFactory.cs
@@ -1,15 +1,12 @@
using System;
-using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Net;
using System.Net.Sockets;
-using System.Threading.Tasks;
-using Emby.Common.Implementations.Networking;
+using Emby.Server.Implementations.Networking;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
-namespace Emby.Common.Implementations.Net
+namespace Emby.Server.Implementations.Net
{
public class SocketFactory : ISocketFactory
{
diff --git a/Emby.Common.Implementations/Net/UdpSocket.cs b/Emby.Server.Implementations/Net/UdpSocket.cs
similarity index 98%
rename from Emby.Common.Implementations/Net/UdpSocket.cs
rename to Emby.Server.Implementations/Net/UdpSocket.cs
index 542d16d24e..58e4d6f89b 100644
--- a/Emby.Common.Implementations/Net/UdpSocket.cs
+++ b/Emby.Server.Implementations/Net/UdpSocket.cs
@@ -1,15 +1,12 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Net;
using System.Net.Sockets;
-using System.Security;
using System.Threading;
using System.Threading.Tasks;
-using Emby.Common.Implementations.Networking;
+using Emby.Server.Implementations.Networking;
using MediaBrowser.Model.Net;
-namespace Emby.Common.Implementations.Net
+namespace Emby.Server.Implementations.Net
{
// THIS IS A LINKED FILE - SHARED AMONGST MULTIPLE PLATFORMS
// Be careful to check any changes compile and work for all platform projects it is shared in.
diff --git a/Emby.Common.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs
similarity index 99%
rename from Emby.Common.Implementations/Networking/NetworkManager.cs
rename to Emby.Server.Implementations/Networking/NetworkManager.cs
index 354107bb7a..b47c058dff 100644
--- a/Emby.Common.Implementations/Networking/NetworkManager.cs
+++ b/Emby.Server.Implementations/Networking/NetworkManager.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Model.Logging;
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -7,12 +6,13 @@ using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Threading.Tasks;
+using MediaBrowser.Common.Net;
using MediaBrowser.Model.Extensions;
-using MediaBrowser.Model.Net;
using MediaBrowser.Model.IO;
-using MediaBrowser.Common.Net;
+using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Net;
-namespace Emby.Common.Implementations.Networking
+namespace Emby.Server.Implementations.Networking
{
public class NetworkManager : INetworkManager
{
diff --git a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs b/Emby.Server.Implementations/Reflection/AssemblyInfo.cs
similarity index 92%
rename from Emby.Common.Implementations/Reflection/AssemblyInfo.cs
rename to Emby.Server.Implementations/Reflection/AssemblyInfo.cs
index 87821bf7ab..c3ce97d40e 100644
--- a/Emby.Common.Implementations/Reflection/AssemblyInfo.cs
+++ b/Emby.Server.Implementations/Reflection/AssemblyInfo.cs
@@ -1,9 +1,9 @@
using System;
using System.IO;
-using MediaBrowser.Model.Reflection;
using System.Reflection;
+using MediaBrowser.Model.Reflection;
-namespace Emby.Common.Implementations.Reflection
+namespace Emby.Server.Implementations.Reflection
{
public class AssemblyInfo : IAssemblyInfo
{
diff --git a/Emby.Common.Implementations/ScheduledTasks/DailyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs
similarity index 98%
rename from Emby.Common.Implementations/ScheduledTasks/DailyTrigger.cs
rename to Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs
index 5735f80260..1ba5d4329c 100644
--- a/Emby.Common.Implementations/ScheduledTasks/DailyTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs
@@ -5,7 +5,7 @@ using MediaBrowser.Model.Events;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks
+namespace Emby.Server.Implementations.ScheduledTasks
{
///
/// Represents a task trigger that fires everyday
diff --git a/Emby.Common.Implementations/ScheduledTasks/IntervalTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs
similarity index 98%
rename from Emby.Common.Implementations/ScheduledTasks/IntervalTrigger.cs
rename to Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs
index 4d2769d8fb..d09765e34d 100644
--- a/Emby.Common.Implementations/ScheduledTasks/IntervalTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs
@@ -5,7 +5,7 @@ using MediaBrowser.Model.Events;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks
+namespace Emby.Server.Implementations.ScheduledTasks
{
///
/// Represents a task trigger that runs repeatedly on an interval
diff --git a/Emby.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
similarity index 99%
rename from Emby.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
rename to Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index dd840677a3..d7d048110e 100644
--- a/Emby.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -9,14 +9,14 @@ using MediaBrowser.Common.Events;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Progress;
using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
-using MediaBrowser.Model.Extensions;
-namespace Emby.Common.Implementations.ScheduledTasks
+namespace Emby.Server.Implementations.ScheduledTasks
{
///
/// Class ScheduledTaskWorker
diff --git a/Emby.Common.Implementations/ScheduledTasks/StartupTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs
similarity index 97%
rename from Emby.Common.Implementations/ScheduledTasks/StartupTrigger.cs
rename to Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs
index 8aae644bc9..d708c905dc 100644
--- a/Emby.Common.Implementations/ScheduledTasks/StartupTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs
@@ -4,7 +4,7 @@ using MediaBrowser.Model.Events;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks
+namespace Emby.Server.Implementations.ScheduledTasks
{
///
/// Class StartupTaskTrigger
diff --git a/Emby.Common.Implementations/ScheduledTasks/SystemEventTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
similarity index 98%
rename from Emby.Common.Implementations/ScheduledTasks/SystemEventTrigger.cs
rename to Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
index a136a975ae..976754a40e 100644
--- a/Emby.Common.Implementations/ScheduledTasks/SystemEventTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
@@ -5,7 +5,7 @@ using MediaBrowser.Model.Logging;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks
+namespace Emby.Server.Implementations.ScheduledTasks
{
///
/// Class SystemEventTrigger
diff --git a/Emby.Common.Implementations/ScheduledTasks/TaskManager.cs b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
similarity index 98%
rename from Emby.Common.Implementations/ScheduledTasks/TaskManager.cs
rename to Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
index b0153c5882..5f9bf37316 100644
--- a/Emby.Common.Implementations/ScheduledTasks/TaskManager.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
@@ -1,18 +1,18 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Events;
-using MediaBrowser.Model.Events;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Serialization;
-using MediaBrowser.Model.Tasks;
-using System;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Events;
+using MediaBrowser.Model.Events;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
+using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks
+namespace Emby.Server.Implementations.ScheduledTasks
{
///
/// Class TaskManager
diff --git a/Emby.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
similarity index 99%
rename from Emby.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
rename to Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
index 1cad2e9b83..701358fd45 100644
--- a/Emby.Common.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
@@ -9,7 +9,7 @@ using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks.Tasks
+namespace Emby.Server.Implementations.ScheduledTasks.Tasks
{
///
/// Deletes old cache files
diff --git a/Emby.Common.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
similarity index 98%
rename from Emby.Common.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
rename to Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
index 3f43fa8894..f98b096596 100644
--- a/Emby.Common.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
@@ -7,7 +7,7 @@ using MediaBrowser.Common.Configuration;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks.Tasks
+namespace Emby.Server.Implementations.ScheduledTasks.Tasks
{
///
/// Deletes old log files
diff --git a/Emby.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs
similarity index 98%
rename from Emby.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs
rename to Emby.Server.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs
index 80411de055..032fa05a0e 100644
--- a/Emby.Common.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/ReloadLoggerFileTask.cs
@@ -6,7 +6,7 @@ using MediaBrowser.Common.Configuration;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks.Tasks
+namespace Emby.Server.Implementations.ScheduledTasks.Tasks
{
///
/// Class ReloadLoggerFileTask
diff --git a/Emby.Common.Implementations/ScheduledTasks/WeeklyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs
similarity index 98%
rename from Emby.Common.Implementations/ScheduledTasks/WeeklyTrigger.cs
rename to Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs
index 91540ba164..1a944ebf2c 100644
--- a/Emby.Common.Implementations/ScheduledTasks/WeeklyTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs
@@ -4,7 +4,7 @@ using MediaBrowser.Model.Events;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
-namespace Emby.Common.Implementations.ScheduledTasks
+namespace Emby.Server.Implementations.ScheduledTasks
{
///
/// Represents a task trigger that fires on a weekly basis
diff --git a/Emby.Common.Implementations/Serialization/JsonSerializer.cs b/Emby.Server.Implementations/Serialization/JsonSerializer.cs
similarity index 100%
rename from Emby.Common.Implementations/Serialization/JsonSerializer.cs
rename to Emby.Server.Implementations/Serialization/JsonSerializer.cs
diff --git a/Emby.Common.Implementations/Serialization/XmlSerializer.cs b/Emby.Server.Implementations/Serialization/XmlSerializer.cs
similarity index 96%
rename from Emby.Common.Implementations/Serialization/XmlSerializer.cs
rename to Emby.Server.Implementations/Serialization/XmlSerializer.cs
index b5896e6b0e..e0603a01ff 100644
--- a/Emby.Common.Implementations/Serialization/XmlSerializer.cs
+++ b/Emby.Server.Implementations/Serialization/XmlSerializer.cs
@@ -1,14 +1,13 @@
-using MediaBrowser.Model.Serialization;
-using System;
-using System.Collections.Concurrent;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Serialization;
-namespace Emby.Common.Implementations.Serialization
+namespace Emby.Server.Implementations.Serialization
{
///
/// Provides a wrapper around third party xml serialization.
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Detector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Detector.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/ErrorCode.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/ErrorCode.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/StringExtensions.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/StringExtensions.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/StringExtensions.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/StringExtensions.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/GenProfile.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/GenProfile.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/InternalException.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/InternalException.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Language.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Language.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/ProbVector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/ProbVector.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/afr b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/afr
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/afr
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/afr
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ara b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ara
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ara
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ara
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ben b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ben
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ben
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ben
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/bul b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/bul
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/bul
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/bul
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ces b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ces
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ces
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ces
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/dan b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/dan
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/dan
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/dan
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/deu b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/deu
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/deu
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/deu
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ell b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ell
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ell
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ell
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/eng b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/eng
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/eng
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/eng
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/est b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/est
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/est
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/est
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/fas b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/fas
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/fas
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/fas
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/fin b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/fin
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/fin
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/fin
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/fra b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/fra
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/fra
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/fra
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/guj b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/guj
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/guj
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/guj
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/heb b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/heb
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/heb
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/heb
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/hin b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/hin
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/hin
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/hin
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/hrv b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/hrv
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/hrv
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/hrv
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/hun b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/hun
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/hun
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/hun
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ind b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ind
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ind
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ind
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ita b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ita
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ita
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ita
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/jpn b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/jpn
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/jpn
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/jpn
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/kan b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/kan
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/kan
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/kan
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/kor b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/kor
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/kor
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/kor
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/lav b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/lav
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/lav
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/lav
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/lit b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/lit
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/lit
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/lit
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/mal b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/mal
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/mal
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/mal
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/mar b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/mar
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/mar
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/mar
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/mkd b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/mkd
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/mkd
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/mkd
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/nep b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/nep
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/nep
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/nep
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/nld b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/nld
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/nld
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/nld
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/nor b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/nor
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/nor
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/nor
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/pan b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/pan
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/pan
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/pan
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/pol b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/pol
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/pol
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/pol
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/por b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/por
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/por
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/por
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ron b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ron
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ron
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ron
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/rus b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/rus
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/rus
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/rus
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/slk b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/slk
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/slk
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/slk
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/slv b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/slv
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/slv
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/slv
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/som b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/som
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/som
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/som
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/spa b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/spa
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/spa
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/spa
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/sqi b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/sqi
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/sqi
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/sqi
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/swa b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/swa
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/swa
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/swa
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/swe b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/swe
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/swe
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/swe
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tam b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tam
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tam
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tam
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tel b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tel
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tel
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tel
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tgl b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tgl
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tgl
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tgl
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tha b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tha
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tha
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tha
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tur b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tur
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/tur
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/tur
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ukr b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ukr
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/ukr
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/ukr
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/urd b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/urd
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/urd
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/urd
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/vie b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/vie
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/vie
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/vie
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/zh-cn b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/zh-cn
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/zh-cn
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/zh-cn
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/zh-tw b/Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/zh-tw
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Profiles/zh-tw
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Profiles/zh-tw
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs
diff --git a/Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/messages.properties b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/messages.properties
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/NLangDetect/Utils/messages.properties
rename to Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/messages.properties
diff --git a/Emby.Common.Implementations/TextEncoding/TextEncoding.cs b/Emby.Server.Implementations/TextEncoding/TextEncoding.cs
similarity index 98%
rename from Emby.Common.Implementations/TextEncoding/TextEncoding.cs
rename to Emby.Server.Implementations/TextEncoding/TextEncoding.cs
index 54c47d62c1..1496d6f0f5 100644
--- a/Emby.Common.Implementations/TextEncoding/TextEncoding.cs
+++ b/Emby.Server.Implementations/TextEncoding/TextEncoding.cs
@@ -1,17 +1,13 @@
using System;
using System.Text;
using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Text;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Logging;
-using UniversalDetector;
-using NLangDetect.Core;
using MediaBrowser.Model.Serialization;
+using MediaBrowser.Model.Text;
+using NLangDetect.Core;
+using UniversalDetector;
-namespace Emby.Common.Implementations.TextEncoding
+namespace Emby.Server.Implementations.TextEncoding
{
public class TextEncoding : ITextEncoding
{
diff --git a/Emby.Common.Implementations/TextEncoding/TextEncodingDetect.cs b/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs
similarity index 98%
rename from Emby.Common.Implementations/TextEncoding/TextEncodingDetect.cs
rename to Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs
index 1018dd24c1..a0395a21b9 100644
--- a/Emby.Common.Implementations/TextEncoding/TextEncodingDetect.cs
+++ b/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-
-namespace Emby.Common.Implementations.TextEncoding
+namespace Emby.Server.Implementations.TextEncoding
{
// Copyright 2015-2016 Jonathan Bennett
//
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/Charsets.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Charsets.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/Charsets.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Charsets.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangBulgarianModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangBulgarianModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangBulgarianModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangBulgarianModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangCyrillicModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangCyrillicModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangCyrillicModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangCyrillicModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangGreekModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangGreekModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangGreekModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangGreekModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangHebrewModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangHebrewModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangHebrewModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangHebrewModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangHungarianModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangHungarianModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangHungarianModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangHungarianModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangThaiModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangThaiModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/LangThaiModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/LangThaiModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/DetectionConfidence.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/DetectionConfidence.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/DetectionConfidence.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/DetectionConfidence.cs
diff --git a/Emby.Common.Implementations/TextEncoding/UniversalDetector/ICharsetDetector.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/ICharsetDetector.cs
similarity index 100%
rename from Emby.Common.Implementations/TextEncoding/UniversalDetector/ICharsetDetector.cs
rename to Emby.Server.Implementations/TextEncoding/UniversalDetector/ICharsetDetector.cs
diff --git a/Emby.Common.Implementations/Threading/CommonTimer.cs b/Emby.Server.Implementations/Threading/CommonTimer.cs
similarity index 87%
rename from Emby.Common.Implementations/Threading/CommonTimer.cs
rename to Emby.Server.Implementations/Threading/CommonTimer.cs
index 8895f6798a..9451b07f32 100644
--- a/Emby.Common.Implementations/Threading/CommonTimer.cs
+++ b/Emby.Server.Implementations/Threading/CommonTimer.cs
@@ -1,11 +1,8 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Threading;
-using System.Threading.Tasks;
using MediaBrowser.Model.Threading;
-namespace Emby.Common.Implementations.Threading
+namespace Emby.Server.Implementations.Threading
{
public class CommonTimer : ITimer
{
diff --git a/Emby.Common.Implementations/Threading/TimerFactory.cs b/Emby.Server.Implementations/Threading/TimerFactory.cs
similarity index 79%
rename from Emby.Common.Implementations/Threading/TimerFactory.cs
rename to Emby.Server.Implementations/Threading/TimerFactory.cs
index 028dd09639..4ab6f6fc4c 100644
--- a/Emby.Common.Implementations/Threading/TimerFactory.cs
+++ b/Emby.Server.Implementations/Threading/TimerFactory.cs
@@ -1,10 +1,7 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
using MediaBrowser.Model.Threading;
-namespace Emby.Common.Implementations.Threading
+namespace Emby.Server.Implementations.Threading
{
public class TimerFactory : ITimerFactory
{
diff --git a/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs b/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs
similarity index 91%
rename from Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs
rename to Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs
index 35c266cdb2..0f4e8af3c6 100644
--- a/Emby.Common.Implementations/Xml/XmlReaderSettingsFactory.cs
+++ b/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs
@@ -1,7 +1,7 @@
using System.Xml;
using MediaBrowser.Model.Xml;
-namespace Emby.Common.Implementations.Xml
+namespace Emby.Server.Implementations.Xml
{
public class XmlReaderSettingsFactory : IXmlReaderSettingsFactory
{
diff --git a/Emby.Server.Implementations/packages.config b/Emby.Server.Implementations/packages.config
index 3675e1950e..fc28b26539 100644
--- a/Emby.Server.Implementations/packages.config
+++ b/Emby.Server.Implementations/packages.config
@@ -3,7 +3,9 @@
+
+
diff --git a/MediaBrowser.Api/LiveTv/ProgressiveFileCopier.cs b/MediaBrowser.Api/LiveTv/ProgressiveFileCopier.cs
index 20466c5f63..9ce109fc40 100644
--- a/MediaBrowser.Api/LiveTv/ProgressiveFileCopier.cs
+++ b/MediaBrowser.Api/LiveTv/ProgressiveFileCopier.cs
@@ -80,7 +80,7 @@ namespace MediaBrowser.Api.LiveTv
var eofCount = 0;
// use non-async filestream along with read due to https://github.com/dotnet/corefx/issues/6039
- var allowAsyncFileRead = _environment.OperatingSystem != OperatingSystem.Windows;
+ var allowAsyncFileRead = _environment.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows;
using (var inputStream = GetInputStream(allowAsyncFileRead))
{
diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs
index 27ff334ee2..43fc307f48 100644
--- a/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/ILiveTvRecording.cs
@@ -18,8 +18,6 @@ namespace MediaBrowser.Controller.LiveTv
string Container { get; }
- long? RunTimeTicks { get; set; }
-
string GetClientTypeName();
bool IsParentalAllowed(User user);
@@ -36,8 +34,6 @@ namespace MediaBrowser.Controller.LiveTv
string TimerId { get; set; }
RecordingStatus Status { get; set; }
DateTime? EndDate { get; set; }
- DateTime DateLastSaved { get; set; }
DateTime DateCreated { get; set; }
- DateTime DateModified { get; set; }
}
}
diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
index 48b4fdb4fb..bb113bf03a 100644
--- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
+++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
@@ -106,10 +106,6 @@
{713f42b5-878e-499d-a878-e4c652b1d5e8}
DvdLib
-
- {1e37a338-9f57-4b70-bd6d-bb9c591e319b}
- Emby.Common.Implementations
-
{805844ab-e92f-45e6-9d99-4f6d48d129a5}
Emby.Dlna
diff --git a/MediaBrowser.Server.Mono/Native/MonoFileSystem.cs b/MediaBrowser.Server.Mono/Native/MonoFileSystem.cs
index 91c064efec..e6b77991cd 100644
--- a/MediaBrowser.Server.Mono/Native/MonoFileSystem.cs
+++ b/MediaBrowser.Server.Mono/Native/MonoFileSystem.cs
@@ -1,4 +1,4 @@
-using Emby.Common.Implementations.IO;
+using Emby.Server.Implementations.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.System;
using Mono.Unix.Native;
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs
index aa6a58b48b..c50f97fc12 100644
--- a/MediaBrowser.Server.Mono/Program.cs
+++ b/MediaBrowser.Server.Mono/Program.cs
@@ -11,14 +11,13 @@ using System.Net.Security;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
-using Emby.Common.Implementations.EnvironmentInfo;
-using Emby.Common.Implementations.Logging;
-using Emby.Common.Implementations.Networking;
using Emby.Server.Core.Cryptography;
using Emby.Server.Core;
using Emby.Server.Implementations;
+using Emby.Server.Implementations.EnvironmentInfo;
using Emby.Server.Implementations.IO;
using Emby.Server.Implementations.Logging;
+using Emby.Server.Implementations.Networking;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.System;
using Mono.Unix.Native;
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs
index e687b34cf5..7f72473ea5 100644
--- a/MediaBrowser.ServerApplication/MainStartup.cs
+++ b/MediaBrowser.ServerApplication/MainStartup.cs
@@ -17,15 +17,12 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
-using Emby.Common.Implementations.EnvironmentInfo;
-using Emby.Common.Implementations.IO;
-using Emby.Common.Implementations.Logging;
-using Emby.Common.Implementations.Networking;
using Emby.Server.Core.Cryptography;
using Emby.Drawing;
using Emby.Server.Core;
using Emby.Server.Implementations;
using Emby.Server.Implementations.Browser;
+using Emby.Server.Implementations.EnvironmentInfo;
using Emby.Server.Implementations.IO;
using Emby.Server.Implementations.Logging;
using MediaBrowser.Common.Net;
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index a4138a57da..41015a98b7 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -199,10 +199,6 @@
{713f42b5-878e-499d-a878-e4c652b1d5e8}
DvdLib
-
- {1e37a338-9f57-4b70-bd6d-bb9c591e319b}
- Emby.Common.Implementations
-
{805844ab-e92f-45e6-9d99-4f6d48d129a5}
Emby.Dlna
diff --git a/MediaBrowser.ServerApplication/Networking/NetworkManager.cs b/MediaBrowser.ServerApplication/Networking/NetworkManager.cs
index 6d3d96e19a..8933a5760d 100644
--- a/MediaBrowser.ServerApplication/Networking/NetworkManager.cs
+++ b/MediaBrowser.ServerApplication/Networking/NetworkManager.cs
@@ -13,7 +13,7 @@ namespace MediaBrowser.ServerApplication.Networking
///
/// Class NetUtils
///
- public class NetworkManager : Emby.Common.Implementations.Networking.NetworkManager
+ public class NetworkManager : Emby.Server.Implementations.Networking.NetworkManager
{
public NetworkManager(ILogger logger)
: base(logger)
diff --git a/MediaBrowser.ServerApplication/WindowsAppHost.cs b/MediaBrowser.ServerApplication/WindowsAppHost.cs
index 7a35c56147..c872d96e2d 100644
--- a/MediaBrowser.ServerApplication/WindowsAppHost.cs
+++ b/MediaBrowser.ServerApplication/WindowsAppHost.cs
@@ -4,13 +4,13 @@ using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices.ComTypes;
-using Emby.Common.Implementations.IO;
using Emby.Server.CinemaMode;
using Emby.Server.Connect;
using Emby.Server.Core;
using Emby.Server.Implementations;
using Emby.Server.Implementations.EntryPoints;
using Emby.Server.Implementations.FFMpeg;
+using Emby.Server.Implementations.IO;
using Emby.Server.Sync;
using MediaBrowser.Controller.Connect;
using MediaBrowser.Controller.Sync;
diff --git a/MediaBrowser.Tests/M3uParserTest.cs b/MediaBrowser.Tests/M3uParserTest.cs
index 3320d87947..1b42a38238 100644
--- a/MediaBrowser.Tests/M3uParserTest.cs
+++ b/MediaBrowser.Tests/M3uParserTest.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using Emby.Common.Implementations.Cryptography;
+using Emby.Server.Implementations.Cryptography;
using Emby.Server.Implementations.LiveTv.TunerHosts;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Model.Logging;
diff --git a/MediaBrowser.Tests/MediaBrowser.Tests.csproj b/MediaBrowser.Tests/MediaBrowser.Tests.csproj
index 57a645ce09..8e63ab9c3f 100644
--- a/MediaBrowser.Tests/MediaBrowser.Tests.csproj
+++ b/MediaBrowser.Tests/MediaBrowser.Tests.csproj
@@ -68,10 +68,6 @@
-
- {1e37a338-9f57-4b70-bd6d-bb9c591e319b}
- Emby.Common.Implementations
-
{e383961b-9356-4d5d-8233-9a1079d03055}
Emby.Server.Implementations
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index 382417bb64..79d6d90b2b 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26403.7
+VisualStudioVersion = 15.0.26730.3
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F0E0E64C-2A6F-4E35-9533-D53AC07C2CD1}"
EndProject
@@ -70,8 +70,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.Skia", "Emby.D
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Nat", "Mono.Nat\Mono.Nat.csproj", "{CB7F2326-6497-4A3D-BA03-48513B17A7BE}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Common.Implementations", "Emby.Common.Implementations\Emby.Common.Implementations.csproj", "{1E37A338-9F57-4B70-BD6D-BB9C591E319B}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SocketHttpListener", "SocketHttpListener\SocketHttpListener.csproj", "{1D74413B-E7CF-455B-B021-F52BDF881542}"
EndProject
Global
@@ -910,46 +908,6 @@ Global
{CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x64.Build.0 = Release|Any CPU
{CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x86.ActiveCfg = Release|Any CPU
{CB7F2326-6497-4A3D-BA03-48513B17A7BE}.Signed|x86.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Win32.ActiveCfg = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|Win32.Build.0 = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x64.Build.0 = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Debug|x86.Build.0 = Debug|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Any CPU.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Win32.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|Win32.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x64.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x64.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x86.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release Mono|x86.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Any CPU.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Win32.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|Win32.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x64.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x64.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x86.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Release|x86.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Any CPU.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Any CPU.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Win32.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|Win32.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x64.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x64.Build.0 = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x86.ActiveCfg = Release|Any CPU
- {1E37A338-9F57-4B70-BD6D-BB9C591E319B}.Signed|x86.Build.0 = Release|Any CPU
{1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D74413B-E7CF-455B-B021-F52BDF881542}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -994,4 +952,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {3448830C-EBDC-426C-85CD-7BBB9651A7FE}
+ EndGlobalSection
EndGlobal