aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/PackageService.cs
diff options
context:
space:
mode:
authorEric Reed <ebr@mediabrowser3.com>2013-11-04 13:16:47 -0500
committerEric Reed <ebr@mediabrowser3.com>2013-11-04 13:16:47 -0500
commit764e2625bf22ffbd373741d77c5700616235d4d4 (patch)
tree4dcb6e9cd48860ad52e49a731f11d4710858a317 /MediaBrowser.Api/PackageService.cs
parent4bbe8acb5cfc5c4a0c392db71d2858589c8f345f (diff)
Implement plugin update identification by guid
Diffstat (limited to 'MediaBrowser.Api/PackageService.cs')
-rw-r--r--MediaBrowser.Api/PackageService.cs23
1 files changed, 19 insertions, 4 deletions
diff --git a/MediaBrowser.Api/PackageService.cs b/MediaBrowser.Api/PackageService.cs
index 0c6ee20f7..b152f0202 100644
--- a/MediaBrowser.Api/PackageService.cs
+++ b/MediaBrowser.Api/PackageService.cs
@@ -15,7 +15,7 @@ namespace MediaBrowser.Api
/// Class GetPackage
/// </summary>
[Route("/Packages/{Name}", "GET")]
- [Api(("Gets a package, by name"))]
+ [Api(("Gets a package, by name or assembly guid"))]
public class GetPackage : IReturn<PackageInfo>
{
/// <summary>
@@ -24,6 +24,13 @@ namespace MediaBrowser.Api
/// <value>The name.</value>
[ApiMember(Name = "Name", Description = "The name of the package", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Name { get; set; }
+
+ /// <summary>
+ /// Gets or sets the name.
+ /// </summary>
+ /// <value>The name.</value>
+ [ApiMember(Name = "AssemblyGuid", Description = "The guid of the associated assembly", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string AssemblyGuid { get; set; }
}
/// <summary>
@@ -77,6 +84,13 @@ namespace MediaBrowser.Api
public string Name { get; set; }
/// <summary>
+ /// Gets or sets the name.
+ /// </summary>
+ /// <value>The name.</value>
+ [ApiMember(Name = "AssemblyGuid", Description = "Guid of the associated assembly", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
+ public string AssemblyGuid { get; set; }
+
+ /// <summary>
/// Gets or sets the version.
/// </summary>
/// <value>The version.</value>
@@ -157,7 +171,8 @@ namespace MediaBrowser.Api
{
var packages = _installationManager.GetAvailablePackages(CancellationToken.None, applicationVersion: _appHost.ApplicationVersion).Result;
- var result = packages.FirstOrDefault(p => p.name.Equals(request.Name, StringComparison.OrdinalIgnoreCase));
+ var result = packages.FirstOrDefault(p => string.Equals(p.guid, request.AssemblyGuid ?? "none", StringComparison.OrdinalIgnoreCase))
+ ?? packages.FirstOrDefault(p => p.name.Equals(request.Name, StringComparison.OrdinalIgnoreCase));
return ToOptimizedResult(result);
}
@@ -194,8 +209,8 @@ namespace MediaBrowser.Api
public void Post(InstallPackage request)
{
var package = string.IsNullOrEmpty(request.Version) ?
- _installationManager.GetLatestCompatibleVersion(request.Name, _appHost.ApplicationVersion, request.UpdateClass).Result :
- _installationManager.GetPackage(request.Name, request.UpdateClass, Version.Parse(request.Version)).Result;
+ _installationManager.GetLatestCompatibleVersion(request.Name, request.AssemblyGuid, _appHost.ApplicationVersion, request.UpdateClass).Result :
+ _installationManager.GetPackage(request.Name, request.AssemblyGuid, request.UpdateClass, Version.Parse(request.Version)).Result;
if (package == null)
{