diff options
Diffstat (limited to 'MediaBrowser.Api/PluginService.cs')
| -rw-r--r-- | MediaBrowser.Api/PluginService.cs | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs index 4bd78f1f5..4af9bfe58 100644 --- a/MediaBrowser.Api/PluginService.cs +++ b/MediaBrowser.Api/PluginService.cs @@ -1,7 +1,9 @@ using MediaBrowser.Common; using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Common.Security; using MediaBrowser.Common.Updates; +using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Plugins; @@ -25,6 +27,7 @@ namespace MediaBrowser.Api [Authenticated] public class GetPlugins : IReturn<List<PluginInfo>> { + public bool? IsAppStoreEnabled { get; set; } } /// <summary> @@ -133,8 +136,10 @@ namespace MediaBrowser.Api private readonly ISecurityManager _securityManager; private readonly IInstallationManager _installationManager; + private readonly INetworkManager _network; + private readonly IDeviceManager _deviceManager; - public PluginService(IJsonSerializer jsonSerializer, IApplicationHost appHost, ISecurityManager securityManager, IInstallationManager installationManager) + public PluginService(IJsonSerializer jsonSerializer, IApplicationHost appHost, ISecurityManager securityManager, IInstallationManager installationManager, INetworkManager network, IDeviceManager deviceManager) : base() { if (jsonSerializer == null) @@ -145,6 +150,8 @@ namespace MediaBrowser.Api _appHost = appHost; _securityManager = securityManager; _installationManager = installationManager; + _network = network; + _deviceManager = deviceManager; _jsonSerializer = jsonSerializer; } @@ -164,13 +171,15 @@ namespace MediaBrowser.Api { var result = await _securityManager.GetRegistrationStatus(request.Name).ConfigureAwait(false); - return ToOptimizedResult(new RegistrationInfo + var info = new RegistrationInfo { ExpirationDate = result.ExpirationDate, IsRegistered = result.IsRegistered, IsTrial = result.TrialVersion, Name = request.Name - }); + }; + + return ToOptimizedResult(info); } /// <summary> @@ -181,6 +190,7 @@ namespace MediaBrowser.Api public async Task<object> Get(GetPlugins request) { var result = _appHost.Plugins.OrderBy(p => p.Name).Select(p => p.GetPluginInfo()).ToList(); + var requireAppStoreEnabled = request.IsAppStoreEnabled.HasValue && request.IsAppStoreEnabled.Value; // Don't fail just on account of image url's try @@ -197,10 +207,26 @@ namespace MediaBrowser.Api plugin.ImageUrl = pkg.thumbImage; } } + + if (requireAppStoreEnabled) + { + result = result + .Where(plugin => + { + var pkg = packages.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i.guid) && new Guid(plugin.Id).Equals(new Guid(i.guid))); + return pkg != null && pkg.enableInAppStore; + + }) + .ToList(); + } } catch { - + // Play it safe here + if (requireAppStoreEnabled) + { + result = new List<PluginInfo>(); + } } return ToOptimizedSerializedResultUsingCache(result); |
