aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/PluginService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/PluginService.cs')
-rw-r--r--MediaBrowser.Api/PluginService.cs34
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);