From acf5b0b6ed173a3a9540d0585bd491a119d524cf Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Thu, 21 Feb 2013 00:00:56 -0500 Subject: isolated DotNetZip dependancy --- MediaBrowser.Controller/Kernel.cs | 14 ++++++++-- .../MediaBrowser.Controller.csproj | 3 -- MediaBrowser.Controller/MediaInfo/FFMpegManager.cs | 32 +++++++++++++++------- .../Updates/InstallationManager.cs | 23 +++++++++++----- MediaBrowser.Controller/packages.config | 1 - 5 files changed, 49 insertions(+), 24 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index c4d8f3e6c9..22c241fd4f 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -15,6 +15,7 @@ using MediaBrowser.Controller.ScheduledTasks; using MediaBrowser.Controller.Updates; using MediaBrowser.Controller.Weather; using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.IO; using MediaBrowser.Model.System; using System; using System.Collections.Generic; @@ -297,13 +298,20 @@ namespace MediaBrowser.Controller get { return 7359; } } + /// + /// Gets or sets the zip client. + /// + /// The zip client. + private IZipClient ZipClient { get; set; } + /// /// Creates a kernel based on a Data path, which is akin to our current programdata path /// - public Kernel(IIsoManager isoManager) + public Kernel(IIsoManager isoManager, IZipClient zipClient) : base(isoManager) { Instance = this; + ZipClient = zipClient; } /// @@ -319,10 +327,10 @@ namespace MediaBrowser.Controller RootFolder = null; ReloadResourcePools(); - InstallationManager = new InstallationManager(this); + InstallationManager = new InstallationManager(this, ZipClient); LibraryManager = new LibraryManager(this); UserManager = new UserManager(this); - FFMpegManager = new FFMpegManager(this); + FFMpegManager = new FFMpegManager(this, ZipClient); ImageManager = new ImageManager(this); ProviderManager = new ProviderManager(this); UserDataManager = new UserDataManager(this); diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index e15e053be6..f911f190df 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -53,9 +53,6 @@ MinimumRecommendedRules.ruleset - - ..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll - Plugins\Mediabrowser.PluginSecurity.dll diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs index ee7c87f901..ad0b3a63f1 100644 --- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs +++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs @@ -1,5 +1,4 @@ -using Ionic.Zip; -using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Common.Kernel; using MediaBrowser.Common.Serialization; @@ -7,6 +6,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; using System; using System.Collections.Generic; using System.ComponentModel; @@ -58,14 +58,29 @@ namespace MediaBrowser.Controller.MediaInfo /// /// The subtitle cache. internal FileSystemRepository SubtitleCache { get; set; } - + + /// + /// Gets or sets the zip client. + /// + /// The zip client. + private IZipClient ZipClient { get; set; } + /// /// Initializes a new instance of the class. /// /// The kernel. - public FFMpegManager(Kernel kernel) + /// The zip client. + /// zipClient + public FFMpegManager(Kernel kernel, IZipClient zipClient) : base(kernel) { + if (zipClient == null) + { + throw new ArgumentNullException("zipClient"); + } + + ZipClient = zipClient; + // Not crazy about this but it's the only way to suppress ffmpeg crash dialog boxes SetErrorMode(ErrorModes.SEM_FAILCRITICALERRORS | ErrorModes.SEM_NOALIGNMENTFAULTEXCEPT | ErrorModes.SEM_NOGPFAULTERRORBOX | ErrorModes.SEM_NOOPENFILEERRORBOX); @@ -352,10 +367,7 @@ namespace MediaBrowser.Controller.MediaInfo { using (var resourceStream = assembly.GetManifestResourceStream(zipFileResourcePath)) { - using (var zipFile = ZipFile.Read(resourceStream)) - { - zipFile.ExtractAll(targetPath, ExtractExistingFileAction.DoNotOverwrite); - } + ZipClient.ExtractAll(resourceStream, targetPath, false); } } @@ -383,7 +395,7 @@ namespace MediaBrowser.Controller.MediaInfo { return "-probesize 1G -analyzeduration 200M"; } - + return string.Empty; } @@ -818,7 +830,7 @@ namespace MediaBrowser.Controller.MediaInfo { throw new ArgumentException("The given MediaStream is not an external subtitle stream"); } - + var process = new Process { StartInfo = new ProcessStartInfo diff --git a/MediaBrowser.Controller/Updates/InstallationManager.cs b/MediaBrowser.Controller/Updates/InstallationManager.cs index 63afa2ce88..8b4a613b9c 100644 --- a/MediaBrowser.Controller/Updates/InstallationManager.cs +++ b/MediaBrowser.Controller/Updates/InstallationManager.cs @@ -1,11 +1,11 @@ using System.Security.Cryptography; -using Ionic.Zip; using MediaBrowser.Common.Events; using MediaBrowser.Common.Kernel; using MediaBrowser.Common.Net; using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Progress; using MediaBrowser.Common.Serialization; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Updates; using System; using System.Collections.Concurrent; @@ -91,14 +91,27 @@ namespace MediaBrowser.Controller.Updates } #endregion + /// + /// Gets or sets the zip client. + /// + /// The zip client. + private IZipClient ZipClient { get; set; } + /// /// Initializes a new instance of the class. /// /// The kernel. - public InstallationManager(Kernel kernel) + /// The zip client. + /// zipClient + public InstallationManager(Kernel kernel, IZipClient zipClient) : base(kernel) { + if (zipClient == null) + { + throw new ArgumentNullException("zipClient"); + } + ZipClient = zipClient; } /// @@ -391,11 +404,7 @@ namespace MediaBrowser.Controller.Updates { try { - // Extract to target in full - overwriting - using (var zipFile = ZipFile.Read(tempFile)) - { - zipFile.ExtractAll(target, ExtractExistingFileAction.OverwriteSilently); - } + ZipClient.ExtractAll(tempFile, target, true); } catch (IOException e) { diff --git a/MediaBrowser.Controller/packages.config b/MediaBrowser.Controller/packages.config index 1ba8ce4526..e3e4367b73 100644 --- a/MediaBrowser.Controller/packages.config +++ b/MediaBrowser.Controller/packages.config @@ -1,6 +1,5 @@  - \ No newline at end of file -- cgit v1.2.3