From 340280edf29cfbf6b519b7fb6312f90e2c1f9871 Mon Sep 17 00:00:00 2001 From: Eric Reed Date: Wed, 27 Feb 2013 07:49:55 -0500 Subject: Partial implementation of PackageManager --- .../Updates/InstallationManager.cs | 52 +++++++++++----------- 1 file changed, 25 insertions(+), 27 deletions(-) (limited to 'MediaBrowser.Controller/Updates/InstallationManager.cs') diff --git a/MediaBrowser.Controller/Updates/InstallationManager.cs b/MediaBrowser.Controller/Updates/InstallationManager.cs index 633cc6bc3..ebd644a82 100644 --- a/MediaBrowser.Controller/Updates/InstallationManager.cs +++ b/MediaBrowser.Controller/Updates/InstallationManager.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.Controller.Updates /// /// Manages all install, uninstall and update operations (both plugins and system) /// - public class InstallationManager : BaseManager, IInstallationManager + public class InstallationManager : BaseManager { /// /// The current installations @@ -109,6 +109,11 @@ namespace MediaBrowser.Controller.Updates /// private readonly INetworkManager _networkManager; + /// + /// The package manager + /// + private readonly IPackageManager _packageManager; + /// /// Gets the json serializer. /// @@ -134,11 +139,12 @@ namespace MediaBrowser.Controller.Updates /// The HTTP client. /// The zip client. /// The network manager. + /// The package manager. /// The json serializer. /// The logger. /// The app host. /// zipClient - public InstallationManager(Kernel kernel, IHttpClient httpClient, IZipClient zipClient, INetworkManager networkManager, IJsonSerializer jsonSerializer, ILogger logger, IApplicationHost appHost) + public InstallationManager(Kernel kernel, IHttpClient httpClient, IZipClient zipClient, INetworkManager networkManager, IPackageManager packageManager, IJsonSerializer jsonSerializer, ILogger logger, IApplicationHost appHost) : base(kernel) { if (zipClient == null) @@ -149,6 +155,10 @@ namespace MediaBrowser.Controller.Updates { throw new ArgumentNullException("networkManager"); } + if (packageManager == null) + { + throw new ArgumentNullException("packageManager"); + } if (logger == null) { throw new ArgumentNullException("logger"); @@ -168,6 +178,7 @@ namespace MediaBrowser.Controller.Updates HttpClient = httpClient; ApplicationHost = appHost; _networkManager = networkManager; + _packageManager = packageManager; _logger = logger; ZipClient = zipClient; } @@ -183,39 +194,26 @@ namespace MediaBrowser.Controller.Updates PackageType? packageType = null, Version applicationVersion = null) { - var data = new Dictionary { { "key", Kernel.SecurityManager.SupporterKey }, { "mac", _networkManager.GetMacAddress() } }; + var packages = (await _packageManager.GetAvailablePackages(HttpClient, _networkManager, Kernel.SecurityManager, Kernel.ResourcePools, JsonSerializer, cancellationToken).ConfigureAwait(false)).ToList(); - using (var json = await HttpClient.Post(Controller.Kernel.MBAdminUrl + "service/package/retrieveall", data, Kernel.ResourcePools.Mb, cancellationToken).ConfigureAwait(false)) + if (packageType.HasValue) { - cancellationToken.ThrowIfCancellationRequested(); - - var packages = JsonSerializer.DeserializeFromStream>(json).ToList(); + packages = packages.Where(p => p.type == packageType.Value).ToList(); + } + // If an app version was supplied, filter the versions for each package to only include supported versions + if (applicationVersion != null) + { foreach (var package in packages) { - package.versions = package.versions.Where(v => !string.IsNullOrWhiteSpace(v.sourceUrl)) - .OrderByDescending(v => v.version).ToList(); - } - - if (packageType.HasValue) - { - packages = packages.Where(p => p.type == packageType.Value).ToList(); - } - - // If an app version was supplied, filter the versions for each package to only include supported versions - if (applicationVersion != null) - { - foreach (var package in packages) - { - package.versions = package.versions.Where(v => IsPackageVersionUpToDate(v, applicationVersion)).ToList(); - } + package.versions = package.versions.Where(v => IsPackageVersionUpToDate(v, applicationVersion)).ToList(); } + } - // Remove packages with no versions - packages = packages.Where(p => p.versions.Any()).ToList(); + // Remove packages with no versions + packages = packages.Where(p => p.versions.Any()).ToList(); - return packages; - } + return packages; } /// -- cgit v1.2.3