diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-21 00:00:56 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-21 00:00:56 -0500 |
| commit | acf5b0b6ed173a3a9540d0585bd491a119d524cf (patch) | |
| tree | b3683559974e1c2ba81301a30788b0ce47ac331e | |
| parent | a0ced20d5b2c486e6798a93d253ab106418bbd6c (diff) | |
isolated DotNetZip dependancy
| -rw-r--r-- | MediaBrowser.Common/Kernel/BaseManager.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Kernel.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaInfo/FFMpegManager.cs | 32 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Updates/InstallationManager.cs | 23 | ||||
| -rw-r--r-- | MediaBrowser.Controller/packages.config | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/IO/IZipClient.cs | 26 | ||||
| -rw-r--r-- | MediaBrowser.Model/MediaBrowser.Model.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/App.xaml.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/Implementations/DotNetZipClient.cs | 43 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj | 5 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/packages.config | 1 |
12 files changed, 134 insertions, 28 deletions
diff --git a/MediaBrowser.Common/Kernel/BaseManager.cs b/MediaBrowser.Common/Kernel/BaseManager.cs index a9aff4d1c..565e4295e 100644 --- a/MediaBrowser.Common/Kernel/BaseManager.cs +++ b/MediaBrowser.Common/Kernel/BaseManager.cs @@ -26,8 +26,14 @@ namespace MediaBrowser.Common.Kernel /// Initializes a new instance of the <see cref="BaseManager" /> class. /// </summary> /// <param name="kernel">The kernel.</param> + /// <exception cref="System.ArgumentNullException">kernel</exception> protected BaseManager(TKernelType kernel) { + if (kernel == null) + { + throw new ArgumentNullException("kernel"); + } + Kernel = kernel; Logger = LogManager.GetLogger(GetType().Name); diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index c4d8f3e6c..22c241fd4 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; @@ -298,12 +299,19 @@ namespace MediaBrowser.Controller } /// <summary> + /// Gets or sets the zip client. + /// </summary> + /// <value>The zip client.</value> + private IZipClient ZipClient { get; set; } + + /// <summary> /// Creates a kernel based on a Data path, which is akin to our current programdata path /// </summary> - public Kernel(IIsoManager isoManager) + public Kernel(IIsoManager isoManager, IZipClient zipClient) : base(isoManager) { Instance = this; + ZipClient = zipClient; } /// <summary> @@ -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 e15e053be..f911f190d 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -53,9 +53,6 @@ <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> </PropertyGroup> <ItemGroup> - <Reference Include="Ionic.Zip"> - <HintPath>..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll</HintPath> - </Reference> <Reference Include="Mediabrowser.PluginSecurity"> <HintPath>Plugins\Mediabrowser.PluginSecurity.dll</HintPath> </Reference> diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs index ee7c87f90..ad0b3a63f 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 /// </summary> /// <value>The subtitle cache.</value> internal FileSystemRepository SubtitleCache { get; set; } - + + /// <summary> + /// Gets or sets the zip client. + /// </summary> + /// <value>The zip client.</value> + private IZipClient ZipClient { get; set; } + /// <summary> /// Initializes a new instance of the <see cref="FFMpegManager" /> class. /// </summary> /// <param name="kernel">The kernel.</param> - public FFMpegManager(Kernel kernel) + /// <param name="zipClient">The zip client.</param> + /// <exception cref="System.ArgumentNullException">zipClient</exception> + 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 63afa2ce8..8b4a613b9 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; @@ -92,13 +92,26 @@ namespace MediaBrowser.Controller.Updates #endregion /// <summary> + /// Gets or sets the zip client. + /// </summary> + /// <value>The zip client.</value> + private IZipClient ZipClient { get; set; } + + /// <summary> /// Initializes a new instance of the <see cref="InstallationManager" /> class. /// </summary> /// <param name="kernel">The kernel.</param> - public InstallationManager(Kernel kernel) + /// <param name="zipClient">The zip client.</param> + /// <exception cref="System.ArgumentNullException">zipClient</exception> + public InstallationManager(Kernel kernel, IZipClient zipClient) : base(kernel) { + if (zipClient == null) + { + throw new ArgumentNullException("zipClient"); + } + ZipClient = zipClient; } /// <summary> @@ -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 1ba8ce452..e3e4367b7 100644 --- a/MediaBrowser.Controller/packages.config +++ b/MediaBrowser.Controller/packages.config @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="DotNetZip" version="1.9.1.8" targetFramework="net45" /> <package id="morelinq" version="1.0.15631-beta" targetFramework="net45" /> <package id="protobuf-net" version="2.0.0.621" targetFramework="net45" /> </packages>
\ No newline at end of file diff --git a/MediaBrowser.Model/IO/IZipClient.cs b/MediaBrowser.Model/IO/IZipClient.cs new file mode 100644 index 000000000..c9e7e0db6 --- /dev/null +++ b/MediaBrowser.Model/IO/IZipClient.cs @@ -0,0 +1,26 @@ +using System.IO; + +namespace MediaBrowser.Model.IO +{ + /// <summary> + /// Interface IZipClient + /// </summary> + public interface IZipClient + { + /// <summary> + /// Extracts all. + /// </summary> + /// <param name="sourceFile">The source file.</param> + /// <param name="targetPath">The target path.</param> + /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param> + void ExtractAll(string sourceFile, string targetPath, bool overwriteExistingFiles); + + /// <summary> + /// Extracts all. + /// </summary> + /// <param name="source">The source.</param> + /// <param name="targetPath">The target path.</param> + /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param> + void ExtractAll(Stream source, string targetPath, bool overwriteExistingFiles); + } +} diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 9a7f65caa..dd11a131a 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -64,6 +64,7 @@ <Compile Include="Entities\IHasMediaStreams.cs" /> <Compile Include="Entities\VideoFormat.cs" /> <Compile Include="Extensions\ModelExtensions.cs" /> + <Compile Include="IO\IZipClient.cs" /> <Compile Include="Logging\ILogger.cs" /> <Compile Include="Logging\LogSeverity.cs" /> <Compile Include="Net\HttpException.cs" /> diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs index 487b60485..e50370444 100644 --- a/MediaBrowser.ServerApplication/App.xaml.cs +++ b/MediaBrowser.ServerApplication/App.xaml.cs @@ -1,13 +1,12 @@ -using MediaBrowser.Common.IO; -using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.Kernel; using MediaBrowser.Common.UI; using MediaBrowser.Controller; using MediaBrowser.IsoMounter; using MediaBrowser.Server.Uninstall; +using MediaBrowser.ServerApplication.Implementations; using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Linq; using System.Windows; @@ -170,7 +169,7 @@ namespace MediaBrowser.ServerApplication /// <returns>IKernel.</returns> protected override IKernel InstantiateKernel() { - return new Kernel(new PismoIsoManager()); + return new Kernel(new PismoIsoManager(), new DotNetZipClient()); } /// <summary> diff --git a/MediaBrowser.ServerApplication/Implementations/DotNetZipClient.cs b/MediaBrowser.ServerApplication/Implementations/DotNetZipClient.cs new file mode 100644 index 000000000..3b174a9b2 --- /dev/null +++ b/MediaBrowser.ServerApplication/Implementations/DotNetZipClient.cs @@ -0,0 +1,43 @@ +using Ionic.Zip; +using MediaBrowser.Model.IO; +using System.IO; + +namespace MediaBrowser.ServerApplication.Implementations +{ + /// <summary> + /// Class DotNetZipClient + /// </summary> + public class DotNetZipClient : IZipClient + { + /// <summary> + /// Extracts all. + /// </summary> + /// <param name="sourceFile">The source file.</param> + /// <param name="targetPath">The target path.</param> + /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param> + public void ExtractAll(string sourceFile, string targetPath, bool overwriteExistingFiles) + { + using (var fileStream = File.OpenRead(sourceFile)) + { + using (var zipFile = ZipFile.Read(fileStream)) + { + zipFile.ExtractAll(targetPath, overwriteExistingFiles ? ExtractExistingFileAction.OverwriteSilently : ExtractExistingFileAction.DoNotOverwrite); + } + } + } + + /// <summary> + /// Extracts all. + /// </summary> + /// <param name="source">The source.</param> + /// <param name="targetPath">The target path.</param> + /// <param name="overwriteExistingFiles">if set to <c>true</c> [overwrite existing files].</param> + public void ExtractAll(Stream source, string targetPath, bool overwriteExistingFiles) + { + using (var zipFile = ZipFile.Read(source)) + { + zipFile.ExtractAll(targetPath, overwriteExistingFiles ? ExtractExistingFileAction.OverwriteSilently : ExtractExistingFileAction.DoNotOverwrite); + } + } + } +} diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 74e437564..86ad7dcaf 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -115,6 +115,10 @@ <Reference Include="Hardcodet.Wpf.TaskbarNotification"> <HintPath>..\packages\Hardcodet.Wpf.TaskbarNotification.1.0.4.0\lib\net40\Hardcodet.Wpf.TaskbarNotification.dll</HintPath> </Reference> + <Reference Include="Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\packages\DotNetZip.1.9.1.8\lib\net20\Ionic.Zip.dll</HintPath> + </Reference> <Reference Include="Platinum.Managed, Version=1.0.4794.22684, Culture=neutral, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> <HintPath>..\ThirdParty\UPnP\Libs\Platinum.Managed.dll</HintPath> @@ -175,6 +179,7 @@ <Compile Include="Controls\MultiItemUpdateNotification.xaml.cs"> <DependentUpon>MultiItemUpdateNotification.xaml</DependentUpon> </Compile> + <Compile Include="Implementations\DotNetZipClient.cs" /> <Compile Include="LibraryExplorer.xaml.cs"> <DependentUpon>LibraryExplorer.xaml</DependentUpon> </Compile> diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index 868a15c6d..c1e5c8098 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <packages> + <package id="DotNetZip" version="1.9.1.8" targetFramework="net45" /> <package id="Hardcodet.Wpf.TaskbarNotification" version="1.0.4.0" targetFramework="net45" /> <package id="System.Data.SQLite" version="1.0.84.0" targetFramework="net45" /> </packages>
\ No newline at end of file |
