Merge pull request #2466 from dkanada/plugin
Update plugin classes for nightly builds
This commit is contained in:
commit
07143bcb68
|
@ -422,7 +422,7 @@ namespace Emby.Server.Implementations.Activity
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPluginUpdated(object sender, GenericEventArgs<(IPlugin, PackageVersionInfo)> e)
|
private void OnPluginUpdated(object sender, GenericEventArgs<(IPlugin, VersionInfo)> e)
|
||||||
{
|
{
|
||||||
CreateLogEntry(new ActivityLogEntry
|
CreateLogEntry(new ActivityLogEntry
|
||||||
{
|
{
|
||||||
|
@ -434,8 +434,8 @@ namespace Emby.Server.Implementations.Activity
|
||||||
ShortOverview = string.Format(
|
ShortOverview = string.Format(
|
||||||
CultureInfo.InvariantCulture,
|
CultureInfo.InvariantCulture,
|
||||||
_localization.GetLocalizedString("VersionNumber"),
|
_localization.GetLocalizedString("VersionNumber"),
|
||||||
e.Argument.Item2.versionStr),
|
e.Argument.Item2.version),
|
||||||
Overview = e.Argument.Item2.description
|
Overview = e.Argument.Item2.changelog
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -451,7 +451,7 @@ namespace Emby.Server.Implementations.Activity
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPluginInstalled(object sender, GenericEventArgs<PackageVersionInfo> e)
|
private void OnPluginInstalled(object sender, GenericEventArgs<VersionInfo> e)
|
||||||
{
|
{
|
||||||
CreateLogEntry(new ActivityLogEntry
|
CreateLogEntry(new ActivityLogEntry
|
||||||
{
|
{
|
||||||
|
@ -463,7 +463,7 @@ namespace Emby.Server.Implementations.Activity
|
||||||
ShortOverview = string.Format(
|
ShortOverview = string.Format(
|
||||||
CultureInfo.InvariantCulture,
|
CultureInfo.InvariantCulture,
|
||||||
_localization.GetLocalizedString("VersionNumber"),
|
_localization.GetLocalizedString("VersionNumber"),
|
||||||
e.Argument.versionStr)
|
e.Argument.version)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -211,19 +211,6 @@ namespace Emby.Server.Implementations
|
||||||
|
|
||||||
public IFileSystem FileSystemManager { get; set; }
|
public IFileSystem FileSystemManager { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
public PackageVersionClass SystemUpdateLevel
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
#if BETA
|
|
||||||
return PackageVersionClass.Beta;
|
|
||||||
#else
|
|
||||||
return PackageVersionClass.Release;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the service provider.
|
/// Gets or sets the service provider.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1390,7 +1377,6 @@ namespace Emby.Server.Implementations
|
||||||
SupportsLibraryMonitor = true,
|
SupportsLibraryMonitor = true,
|
||||||
EncoderLocation = MediaEncoder.EncoderLocation,
|
EncoderLocation = MediaEncoder.EncoderLocation,
|
||||||
SystemArchitecture = RuntimeInformation.OSArchitecture,
|
SystemArchitecture = RuntimeInformation.OSArchitecture,
|
||||||
SystemUpdateLevel = SystemUpdateLevel,
|
|
||||||
PackageName = StartupOptions.PackageName
|
PackageName = StartupOptions.PackageName
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace Emby.Server.Implementations
|
||||||
{
|
{
|
||||||
{ HostWebClientKey, bool.TrueString },
|
{ HostWebClientKey, bool.TrueString },
|
||||||
{ HttpListenerHost.DefaultRedirectKey, "web/index.html" },
|
{ HttpListenerHost.DefaultRedirectKey, "web/index.html" },
|
||||||
{ InstallationManager.PluginManifestUrlKey, "https://repo.jellyfin.org/releases/plugin/manifest.json" },
|
{ InstallationManager.PluginManifestUrlKey, "https://repo.jellyfin.org/releases/plugin/manifest-stable.json" },
|
||||||
{ FfmpegProbeSizeKey, "1G" },
|
{ FfmpegProbeSizeKey, "1G" },
|
||||||
{ FfmpegAnalyzeDurationKey, "200M" },
|
{ FfmpegAnalyzeDurationKey, "200M" },
|
||||||
{ PlaylistsAllowDuplicatesKey, bool.TrueString }
|
{ PlaylistsAllowDuplicatesKey, bool.TrueString }
|
||||||
|
|
|
@ -26,7 +26,7 @@ using Microsoft.Extensions.Logging;
|
||||||
namespace Emby.Server.Implementations.Updates
|
namespace Emby.Server.Implementations.Updates
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Manages all install, uninstall and update operations (both plugins and system).
|
/// Manages all install, uninstall, and update operations for the system and individual plugins.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class InstallationManager : IInstallationManager
|
public class InstallationManager : IInstallationManager
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
public const string PluginManifestUrlKey = "InstallationManager:PluginManifestUrl";
|
public const string PluginManifestUrlKey = "InstallationManager:PluginManifestUrl";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _logger.
|
/// The logger.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IApplicationPaths _appPaths;
|
private readonly IApplicationPaths _appPaths;
|
||||||
|
@ -112,10 +112,10 @@ namespace Emby.Server.Implementations.Updates
|
||||||
public event EventHandler<GenericEventArgs<IPlugin>> PluginUninstalled;
|
public event EventHandler<GenericEventArgs<IPlugin>> PluginUninstalled;
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public event EventHandler<GenericEventArgs<(IPlugin, PackageVersionInfo)>> PluginUpdated;
|
public event EventHandler<GenericEventArgs<(IPlugin, VersionInfo)>> PluginUpdated;
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public event EventHandler<GenericEventArgs<PackageVersionInfo>> PluginInstalled;
|
public event EventHandler<GenericEventArgs<VersionInfo>> PluginInstalled;
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IEnumerable<InstallationInfo> CompletedInstallations => _completedInstallationsInternal;
|
public IEnumerable<InstallationInfo> CompletedInstallations => _completedInstallationsInternal;
|
||||||
|
@ -183,61 +183,56 @@ namespace Emby.Server.Implementations.Updates
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IEnumerable<PackageVersionInfo> GetCompatibleVersions(
|
public IEnumerable<VersionInfo> GetCompatibleVersions(
|
||||||
IEnumerable<PackageVersionInfo> availableVersions,
|
IEnumerable<VersionInfo> availableVersions,
|
||||||
Version minVersion = null,
|
Version minVersion = null)
|
||||||
PackageVersionClass classification = PackageVersionClass.Release)
|
|
||||||
{
|
{
|
||||||
var appVer = _applicationHost.ApplicationVersion;
|
var appVer = _applicationHost.ApplicationVersion;
|
||||||
availableVersions = availableVersions
|
availableVersions = availableVersions
|
||||||
.Where(x => x.classification == classification
|
.Where(x => Version.Parse(x.targetAbi) <= appVer);
|
||||||
&& Version.Parse(x.requiredVersionStr) <= appVer);
|
|
||||||
|
|
||||||
if (minVersion != null)
|
if (minVersion != null)
|
||||||
{
|
{
|
||||||
availableVersions = availableVersions.Where(x => x.Version >= minVersion);
|
availableVersions = availableVersions.Where(x => x.version >= minVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
return availableVersions.OrderByDescending(x => x.Version);
|
return availableVersions.OrderByDescending(x => x.version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IEnumerable<PackageVersionInfo> GetCompatibleVersions(
|
public IEnumerable<VersionInfo> GetCompatibleVersions(
|
||||||
IEnumerable<PackageInfo> availablePackages,
|
IEnumerable<PackageInfo> availablePackages,
|
||||||
string name = null,
|
string name = null,
|
||||||
Guid guid = default,
|
Guid guid = default,
|
||||||
Version minVersion = null,
|
Version minVersion = null)
|
||||||
PackageVersionClass classification = PackageVersionClass.Release)
|
|
||||||
{
|
{
|
||||||
var package = FilterPackages(availablePackages, name, guid).FirstOrDefault();
|
var package = FilterPackages(availablePackages, name, guid).FirstOrDefault();
|
||||||
|
|
||||||
// Package not found.
|
// Package not found in repository
|
||||||
if (package == null)
|
if (package == null)
|
||||||
{
|
{
|
||||||
return Enumerable.Empty<PackageVersionInfo>();
|
return Enumerable.Empty<VersionInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
return GetCompatibleVersions(
|
return GetCompatibleVersions(
|
||||||
package.versions,
|
package.versions,
|
||||||
minVersion,
|
minVersion);
|
||||||
classification);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(CancellationToken cancellationToken = default)
|
public async Task<IEnumerable<VersionInfo>> GetAvailablePluginUpdates(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var catalog = await GetAvailablePackages(cancellationToken).ConfigureAwait(false);
|
var catalog = await GetAvailablePackages(cancellationToken).ConfigureAwait(false);
|
||||||
return GetAvailablePluginUpdates(catalog);
|
return GetAvailablePluginUpdates(catalog);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<PackageVersionInfo> GetAvailablePluginUpdates(IReadOnlyList<PackageInfo> pluginCatalog)
|
private IEnumerable<VersionInfo> GetAvailablePluginUpdates(IReadOnlyList<PackageInfo> pluginCatalog)
|
||||||
{
|
{
|
||||||
foreach (var plugin in _applicationHost.Plugins)
|
foreach (var plugin in _applicationHost.Plugins)
|
||||||
{
|
{
|
||||||
var compatibleversions = GetCompatibleVersions(pluginCatalog, plugin.Name, plugin.Id, plugin.Version, _applicationHost.SystemUpdateLevel);
|
var compatibleversions = GetCompatibleVersions(pluginCatalog, plugin.Name, plugin.Id, plugin.Version);
|
||||||
var version = compatibleversions.FirstOrDefault(y => y.Version > plugin.Version);
|
var version = compatibleversions.FirstOrDefault(y => y.version > plugin.Version);
|
||||||
if (version != null
|
if (version != null && !CompletedInstallations.Any(x => string.Equals(x.Guid, version.guid, StringComparison.OrdinalIgnoreCase)))
|
||||||
&& !CompletedInstallations.Any(x => string.Equals(x.AssemblyGuid, version.guid, StringComparison.OrdinalIgnoreCase)))
|
|
||||||
{
|
{
|
||||||
yield return version;
|
yield return version;
|
||||||
}
|
}
|
||||||
|
@ -245,7 +240,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task InstallPackage(PackageVersionInfo package, CancellationToken cancellationToken)
|
public async Task InstallPackage(VersionInfo package, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
if (package == null)
|
if (package == null)
|
||||||
{
|
{
|
||||||
|
@ -254,11 +249,9 @@ namespace Emby.Server.Implementations.Updates
|
||||||
|
|
||||||
var installationInfo = new InstallationInfo
|
var installationInfo = new InstallationInfo
|
||||||
{
|
{
|
||||||
Id = Guid.NewGuid(),
|
Guid = package.guid,
|
||||||
Name = package.name,
|
Name = package.name,
|
||||||
AssemblyGuid = package.guid,
|
Version = package.version.ToString()
|
||||||
UpdateClass = package.classification,
|
|
||||||
Version = package.versionStr
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var innerCancellationTokenSource = new CancellationTokenSource();
|
var innerCancellationTokenSource = new CancellationTokenSource();
|
||||||
|
@ -276,7 +269,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
var installationEventArgs = new InstallationEventArgs
|
var installationEventArgs = new InstallationEventArgs
|
||||||
{
|
{
|
||||||
InstallationInfo = installationInfo,
|
InstallationInfo = installationInfo,
|
||||||
PackageVersionInfo = package
|
VersionInfo = package
|
||||||
};
|
};
|
||||||
|
|
||||||
PackageInstalling?.Invoke(this, installationEventArgs);
|
PackageInstalling?.Invoke(this, installationEventArgs);
|
||||||
|
@ -301,7 +294,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
_currentInstallations.Remove(tuple);
|
_currentInstallations.Remove(tuple);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInformation("Package installation cancelled: {0} {1}", package.name, package.versionStr);
|
_logger.LogInformation("Package installation cancelled: {0} {1}", package.name, package.version);
|
||||||
|
|
||||||
PackageInstallationCancelled?.Invoke(this, installationEventArgs);
|
PackageInstallationCancelled?.Invoke(this, installationEventArgs);
|
||||||
|
|
||||||
|
@ -337,7 +330,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
/// <param name="package">The package.</param>
|
/// <param name="package">The package.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns><see cref="Task" />.</returns>
|
/// <returns><see cref="Task" />.</returns>
|
||||||
private async Task InstallPackageInternal(PackageVersionInfo package, CancellationToken cancellationToken)
|
private async Task InstallPackageInternal(VersionInfo package, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
// Set last update time if we were installed before
|
// Set last update time if we were installed before
|
||||||
IPlugin plugin = _applicationHost.Plugins.FirstOrDefault(p => string.Equals(p.Id.ToString(), package.guid, StringComparison.OrdinalIgnoreCase))
|
IPlugin plugin = _applicationHost.Plugins.FirstOrDefault(p => string.Equals(p.Id.ToString(), package.guid, StringComparison.OrdinalIgnoreCase))
|
||||||
|
@ -349,26 +342,26 @@ namespace Emby.Server.Implementations.Updates
|
||||||
// Do plugin-specific processing
|
// Do plugin-specific processing
|
||||||
if (plugin == null)
|
if (plugin == null)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("New plugin installed: {0} {1} {2}", package.name, package.versionStr ?? string.Empty, package.classification);
|
_logger.LogInformation("New plugin installed: {0} {1} {2}", package.name, package.version);
|
||||||
|
|
||||||
PluginInstalled?.Invoke(this, new GenericEventArgs<PackageVersionInfo>(package));
|
PluginInstalled?.Invoke(this, new GenericEventArgs<VersionInfo>(package));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Plugin updated: {0} {1} {2}", package.name, package.versionStr ?? string.Empty, package.classification);
|
_logger.LogInformation("Plugin updated: {0} {1} {2}", package.name, package.version);
|
||||||
|
|
||||||
PluginUpdated?.Invoke(this, new GenericEventArgs<(IPlugin, PackageVersionInfo)>((plugin, package)));
|
PluginUpdated?.Invoke(this, new GenericEventArgs<(IPlugin, VersionInfo)>((plugin, package)));
|
||||||
}
|
}
|
||||||
|
|
||||||
_applicationHost.NotifyPendingRestart();
|
_applicationHost.NotifyPendingRestart();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task PerformPackageInstallation(PackageVersionInfo package, CancellationToken cancellationToken)
|
private async Task PerformPackageInstallation(VersionInfo package, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var extension = Path.GetExtension(package.targetFilename);
|
var extension = Path.GetExtension(package.filename);
|
||||||
if (!string.Equals(extension, ".zip", StringComparison.OrdinalIgnoreCase))
|
if (!string.Equals(extension, ".zip", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
_logger.LogError("Only zip packages are supported. {Filename} is not a zip archive.", package.targetFilename);
|
_logger.LogError("Only zip packages are supported. {Filename} is not a zip archive.", package.filename);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,7 +408,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Uninstalls a plugin
|
/// Uninstalls a plugin.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="plugin">The plugin.</param>
|
/// <param name="plugin">The plugin.</param>
|
||||||
public void UninstallPlugin(IPlugin plugin)
|
public void UninstallPlugin(IPlugin plugin)
|
||||||
|
@ -473,7 +466,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
{
|
{
|
||||||
lock (_currentInstallationsLock)
|
lock (_currentInstallationsLock)
|
||||||
{
|
{
|
||||||
var install = _currentInstallations.Find(x => x.info.Id == id);
|
var install = _currentInstallations.Find(x => x.info.Guid == id.ToString());
|
||||||
if (install == default((InstallationInfo, CancellationTokenSource)))
|
if (install == default((InstallationInfo, CancellationTokenSource)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -42,23 +42,6 @@ namespace MediaBrowser.Api
|
||||||
[Authenticated]
|
[Authenticated]
|
||||||
public class GetPackages : IReturn<PackageInfo[]>
|
public class GetPackages : IReturn<PackageInfo[]>
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the name.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The name.</value>
|
|
||||||
[ApiMember(Name = "PackageType", Description = "Optional package type filter (System/UserInstalled)", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
|
|
||||||
public string PackageType { get; set; }
|
|
||||||
|
|
||||||
[ApiMember(Name = "TargetSystems", Description = "Optional. Filter by target system type. Allows multiple, comma delimited.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
|
|
||||||
public string TargetSystems { get; set; }
|
|
||||||
|
|
||||||
[ApiMember(Name = "IsPremium", Description = "Optional. Filter by premium status", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
|
|
||||||
public bool? IsPremium { get; set; }
|
|
||||||
|
|
||||||
[ApiMember(Name = "IsAdult", Description = "Optional. Filter by package that contain adult content.", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
|
|
||||||
public bool? IsAdult { get; set; }
|
|
||||||
|
|
||||||
public bool? IsAppStoreEnabled { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -88,13 +71,6 @@ namespace MediaBrowser.Api
|
||||||
/// <value>The version.</value>
|
/// <value>The version.</value>
|
||||||
[ApiMember(Name = "Version", Description = "Optional version. Defaults to latest version.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
|
[ApiMember(Name = "Version", Description = "Optional version. Defaults to latest version.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
|
||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the update class.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The update class.</value>
|
|
||||||
[ApiMember(Name = "UpdateClass", Description = "Optional update class (Dev, Beta, Release). Defaults to Release.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
|
|
||||||
public PackageVersionClass UpdateClass { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -154,23 +130,6 @@ namespace MediaBrowser.Api
|
||||||
{
|
{
|
||||||
IEnumerable<PackageInfo> packages = await _installationManager.GetAvailablePackages().ConfigureAwait(false);
|
IEnumerable<PackageInfo> packages = await _installationManager.GetAvailablePackages().ConfigureAwait(false);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(request.TargetSystems))
|
|
||||||
{
|
|
||||||
var apps = request.TargetSystems.Split(',').Select(i => (PackageTargetSystem)Enum.Parse(typeof(PackageTargetSystem), i, true));
|
|
||||||
|
|
||||||
packages = packages.Where(p => apps.Contains(p.targetSystem));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (request.IsAdult.HasValue)
|
|
||||||
{
|
|
||||||
packages = packages.Where(p => p.adult == request.IsAdult.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (request.IsAppStoreEnabled.HasValue)
|
|
||||||
{
|
|
||||||
packages = packages.Where(p => p.enableInAppStore == request.IsAppStoreEnabled.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ToOptimizedResult(packages.ToArray());
|
return ToOptimizedResult(packages.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,8 +145,7 @@ namespace MediaBrowser.Api
|
||||||
packages,
|
packages,
|
||||||
request.Name,
|
request.Name,
|
||||||
string.IsNullOrEmpty(request.AssemblyGuid) ? Guid.Empty : Guid.Parse(request.AssemblyGuid),
|
string.IsNullOrEmpty(request.AssemblyGuid) ? Guid.Empty : Guid.Parse(request.AssemblyGuid),
|
||||||
string.IsNullOrEmpty(request.Version) ? null : Version.Parse(request.Version),
|
string.IsNullOrEmpty(request.Version) ? null : Version.Parse(request.Version)).FirstOrDefault();
|
||||||
request.UpdateClass).FirstOrDefault();
|
|
||||||
|
|
||||||
if (package == null)
|
if (package == null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,12 +48,6 @@ namespace MediaBrowser.Common
|
||||||
/// <value><c>true</c> if this instance can self restart; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if this instance can self restart; otherwise, <c>false</c>.</value>
|
||||||
bool CanSelfRestart { get; }
|
bool CanSelfRestart { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the version class of the system.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><see cref="PackageVersionClass.Release" /> or <see cref="PackageVersionClass.Beta" />.</value>
|
|
||||||
PackageVersionClass SystemUpdateLevel { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the application version.
|
/// Gets the application version.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -67,7 +67,7 @@ namespace MediaBrowser.Common.Plugins
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called when just before the plugin is uninstalled from the server.
|
/// Called just before the plugin is uninstalled from the server.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void OnUninstalling()
|
public virtual void OnUninstalling()
|
||||||
{
|
{
|
||||||
|
@ -101,7 +101,7 @@ namespace MediaBrowser.Common.Plugins
|
||||||
private readonly object _configurationSyncLock = new object();
|
private readonly object _configurationSyncLock = new object();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The save lock.
|
/// The configuration save lock.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly object _configurationSaveLock = new object();
|
private readonly object _configurationSaveLock = new object();
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ namespace MediaBrowser.Common.Plugins
|
||||||
protected string AssemblyFileName => Path.GetFileName(AssemblyFilePath);
|
protected string AssemblyFileName => Path.GetFileName(AssemblyFilePath);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the plugin's configuration.
|
/// Gets or sets the plugin configuration.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The configuration.</value>
|
/// <value>The configuration.</value>
|
||||||
public TConfigurationType Configuration
|
public TConfigurationType Configuration
|
||||||
|
@ -186,7 +186,7 @@ namespace MediaBrowser.Common.Plugins
|
||||||
public string ConfigurationFilePath => Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
|
public string ConfigurationFilePath => Path.Combine(ApplicationPaths.PluginConfigurationsPath, ConfigurationFileName);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the plugin's configuration.
|
/// Gets the plugin configuration.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The configuration.</value>
|
/// <value>The configuration.</value>
|
||||||
BasePluginConfiguration IHasPluginConfiguration.Configuration => Configuration;
|
BasePluginConfiguration IHasPluginConfiguration.Configuration => Configuration;
|
||||||
|
|
|
@ -28,12 +28,12 @@ namespace MediaBrowser.Common.Updates
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs when a plugin is updated.
|
/// Occurs when a plugin is updated.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
event EventHandler<GenericEventArgs<(IPlugin, PackageVersionInfo)>> PluginUpdated;
|
event EventHandler<GenericEventArgs<(IPlugin, VersionInfo)>> PluginUpdated;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs when a plugin is installed.
|
/// Occurs when a plugin is installed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
event EventHandler<GenericEventArgs<PackageVersionInfo>> PluginInstalled;
|
event EventHandler<GenericEventArgs<VersionInfo>> PluginInstalled;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the completed installations.
|
/// Gets the completed installations.
|
||||||
|
@ -64,12 +64,10 @@ namespace MediaBrowser.Common.Updates
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="availableVersions">The available version of the plugin.</param>
|
/// <param name="availableVersions">The available version of the plugin.</param>
|
||||||
/// <param name="minVersion">The minimum required version of the plugin.</param>
|
/// <param name="minVersion">The minimum required version of the plugin.</param>
|
||||||
/// <param name="classification">The classification of updates.</param>
|
|
||||||
/// <returns>All compatible versions ordered from newest to oldest.</returns>
|
/// <returns>All compatible versions ordered from newest to oldest.</returns>
|
||||||
IEnumerable<PackageVersionInfo> GetCompatibleVersions(
|
IEnumerable<VersionInfo> GetCompatibleVersions(
|
||||||
IEnumerable<PackageVersionInfo> availableVersions,
|
IEnumerable<VersionInfo> availableVersions,
|
||||||
Version minVersion = null,
|
Version minVersion = null);
|
||||||
PackageVersionClass classification = PackageVersionClass.Release);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all compatible versions ordered from newest to oldest.
|
/// Returns all compatible versions ordered from newest to oldest.
|
||||||
|
@ -78,21 +76,19 @@ namespace MediaBrowser.Common.Updates
|
||||||
/// <param name="name">The name.</param>
|
/// <param name="name">The name.</param>
|
||||||
/// <param name="guid">The guid of the plugin.</param>
|
/// <param name="guid">The guid of the plugin.</param>
|
||||||
/// <param name="minVersion">The minimum required version of the plugin.</param>
|
/// <param name="minVersion">The minimum required version of the plugin.</param>
|
||||||
/// <param name="classification">The classification.</param>
|
|
||||||
/// <returns>All compatible versions ordered from newest to oldest.</returns>
|
/// <returns>All compatible versions ordered from newest to oldest.</returns>
|
||||||
IEnumerable<PackageVersionInfo> GetCompatibleVersions(
|
IEnumerable<VersionInfo> GetCompatibleVersions(
|
||||||
IEnumerable<PackageInfo> availablePackages,
|
IEnumerable<PackageInfo> availablePackages,
|
||||||
string name = null,
|
string name = null,
|
||||||
Guid guid = default,
|
Guid guid = default,
|
||||||
Version minVersion = null,
|
Version minVersion = null);
|
||||||
PackageVersionClass classification = PackageVersionClass.Release);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the available plugin updates.
|
/// Returns the available plugin updates.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>The available plugin updates.</returns>
|
/// <returns>The available plugin updates.</returns>
|
||||||
Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(CancellationToken cancellationToken = default);
|
Task<IEnumerable<VersionInfo>> GetAvailablePluginUpdates(CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Installs the package.
|
/// Installs the package.
|
||||||
|
@ -100,7 +96,7 @@ namespace MediaBrowser.Common.Updates
|
||||||
/// <param name="package">The package.</param>
|
/// <param name="package">The package.</param>
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns><see cref="Task" />.</returns>
|
/// <returns><see cref="Task" />.</returns>
|
||||||
Task InstallPackage(PackageVersionInfo package, CancellationToken cancellationToken = default);
|
Task InstallPackage(VersionInfo package, CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Uninstalls a plugin.
|
/// Uninstalls a plugin.
|
||||||
|
|
|
@ -8,6 +8,6 @@ namespace MediaBrowser.Common.Updates
|
||||||
{
|
{
|
||||||
public InstallationInfo InstallationInfo { get; set; }
|
public InstallationInfo InstallationInfo { get; set; }
|
||||||
|
|
||||||
public PackageVersionInfo PackageVersionInfo { get; set; }
|
public VersionInfo VersionInfo { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,17 +8,17 @@ namespace MediaBrowser.Model.Services
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Order in which Request Filters are executed.
|
/// Order in which Request Filters are executed.
|
||||||
/// <0 Executed before global request filters
|
/// <0 Executed before global request filters.
|
||||||
/// >0 Executed after global request filters
|
/// >0 Executed after global request filters.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
int Priority { get; }
|
int Priority { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The request filter is executed before the service.
|
/// The request filter is executed before the service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="req">The http request wrapper</param>
|
/// <param name="req">The http request wrapper.</param>
|
||||||
/// <param name="res">The http response wrapper</param>
|
/// <param name="res">The http response wrapper.</param>
|
||||||
/// <param name="requestDto">The request DTO</param>
|
/// <param name="requestDto">The request DTO.</param>
|
||||||
void RequestFilter(IRequest req, HttpResponse res, object requestDto);
|
void RequestFilter(IRequest req, HttpResponse res, object requestDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,8 +26,6 @@ namespace MediaBrowser.Model.System
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SystemInfo : PublicSystemInfo
|
public class SystemInfo : PublicSystemInfo
|
||||||
{
|
{
|
||||||
public PackageVersionClass SystemUpdateLevel { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the display name of the operating system.
|
/// Gets or sets the display name of the operating system.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
namespace MediaBrowser.Model.Updates
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Class CheckForUpdateResult.
|
|
||||||
/// </summary>
|
|
||||||
public class CheckForUpdateResult
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is update available.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is update available; otherwise, <c>false</c>.</value>
|
|
||||||
public bool IsUpdateAvailable { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the available version.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The available version.</value>
|
|
||||||
public string AvailableVersion
|
|
||||||
{
|
|
||||||
get => Package != null ? Package.versionStr : "0.0.0.1";
|
|
||||||
set { } // need this for the serializer
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get or sets package information for an available update
|
|
||||||
/// </summary>
|
|
||||||
public PackageVersionInfo Package { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -8,10 +8,10 @@ namespace MediaBrowser.Model.Updates
|
||||||
public class InstallationInfo
|
public class InstallationInfo
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the id.
|
/// Gets or sets the guid.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The id.</value>
|
/// <value>The guid.</value>
|
||||||
public Guid Id { get; set; }
|
public string Guid { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the name.
|
/// Gets or sets the name.
|
||||||
|
@ -19,22 +19,10 @@ namespace MediaBrowser.Model.Updates
|
||||||
/// <value>The name.</value>
|
/// <value>The name.</value>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the assembly guid.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The guid of the assembly.</value>
|
|
||||||
public string AssemblyGuid { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the version.
|
/// Gets or sets the version.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The version.</value>
|
/// <value>The version.</value>
|
||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the update class.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The update class.</value>
|
|
||||||
public PackageVersionClass UpdateClass { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,12 +8,6 @@ namespace MediaBrowser.Model.Updates
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class PackageInfo
|
public class PackageInfo
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// The internal id of this package.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The id.</value>
|
|
||||||
public string id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the name.
|
/// Gets or sets the name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -21,59 +15,17 @@ namespace MediaBrowser.Model.Updates
|
||||||
public string name { get; set; }
|
public string name { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the short description.
|
/// Gets or sets a long description of the plugin containing features or helpful explanations.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The short description.</value>
|
/// <value>The description.</value>
|
||||||
public string shortDescription { get; set; }
|
public string description { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the overview.
|
/// Gets or sets a short overview of what the plugin does.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The overview.</value>
|
/// <value>The overview.</value>
|
||||||
public string overview { get; set; }
|
public string overview { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is premium.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is premium; otherwise, <c>false</c>.</value>
|
|
||||||
public bool isPremium { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this instance is adult only content.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if this instance is adult; otherwise, <c>false</c>.</value>
|
|
||||||
public bool adult { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the rich desc URL.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The rich desc URL.</value>
|
|
||||||
public string richDescUrl { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the thumb image.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The thumb image.</value>
|
|
||||||
public string thumbImage { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the preview image.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The preview image.</value>
|
|
||||||
public string previewImage { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the type.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The type.</value>
|
|
||||||
public string type { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the target filename.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The target filename.</value>
|
|
||||||
public string targetFilename { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the owner.
|
/// Gets or sets the owner.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -87,90 +39,24 @@ namespace MediaBrowser.Model.Updates
|
||||||
public string category { get; set; }
|
public string category { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the catalog tile color.
|
/// The guid of the assembly associated with this plugin.
|
||||||
/// </summary>
|
|
||||||
/// <value>The owner.</value>
|
|
||||||
public string tileColor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the feature id of this package (if premium).
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The feature id.</value>
|
|
||||||
public string featureId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the registration info for this package (if premium).
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The registration info.</value>
|
|
||||||
public string regInfo { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the price for this package (if premium).
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The price.</value>
|
|
||||||
public float price { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the target system for this plug-in (Server, MBTheater, MBClassic).
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The target system.</value>
|
|
||||||
public PackageTargetSystem targetSystem { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The guid of the assembly associated with this package (if a plug-in).
|
|
||||||
/// This is used to identify the proper item for automatic updates.
|
/// This is used to identify the proper item for automatic updates.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The name.</value>
|
/// <value>The name.</value>
|
||||||
public string guid { get; set; }
|
public string guid { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the total number of ratings for this package.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The total ratings.</value>
|
|
||||||
public int? totalRatings { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the average rating for this package .
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The rating.</value>
|
|
||||||
public float avgRating { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets whether or not this package is registered.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>True if registered.</value>
|
|
||||||
public bool isRegistered { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the expiration date for this package.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>Expiration Date.</value>
|
|
||||||
public DateTime expDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the versions.
|
/// Gets or sets the versions.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The versions.</value>
|
/// <value>The versions.</value>
|
||||||
public IReadOnlyList<PackageVersionInfo> versions { get; set; }
|
public IReadOnlyList<VersionInfo> versions { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether [enable in application store].
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if [enable in application store]; otherwise, <c>false</c>.</value>
|
|
||||||
public bool enableInAppStore { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the installs.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The installs.</value>
|
|
||||||
public int installs { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="PackageInfo"/> class.
|
/// Initializes a new instance of the <see cref="PackageInfo"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public PackageInfo()
|
public PackageInfo()
|
||||||
{
|
{
|
||||||
versions = Array.Empty<PackageVersionInfo>();
|
versions = Array.Empty<VersionInfo>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
namespace MediaBrowser.Model.Updates
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Enum PackageType.
|
|
||||||
/// </summary>
|
|
||||||
public enum PackageTargetSystem
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Server.
|
|
||||||
/// </summary>
|
|
||||||
Server,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// MB Theater.
|
|
||||||
/// </summary>
|
|
||||||
MBTheater,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// MB Classic.
|
|
||||||
/// </summary>
|
|
||||||
MBClassic
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
namespace MediaBrowser.Model.Updates
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Enum PackageVersionClass.
|
|
||||||
/// </summary>
|
|
||||||
public enum PackageVersionClass
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The release.
|
|
||||||
/// </summary>
|
|
||||||
Release = 0,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The beta.
|
|
||||||
/// </summary>
|
|
||||||
Beta = 1,
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The dev.
|
|
||||||
/// </summary>
|
|
||||||
Dev = 2
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,96 +0,0 @@
|
||||||
#pragma warning disable CS1591
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Updates
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Class PackageVersionInfo.
|
|
||||||
/// </summary>
|
|
||||||
public class PackageVersionInfo
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the name.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The name.</value>
|
|
||||||
public string name { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the guid.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The guid.</value>
|
|
||||||
public string guid { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the version STR.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The version STR.</value>
|
|
||||||
public string versionStr { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The _version
|
|
||||||
/// </summary>
|
|
||||||
private Version _version;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the version.
|
|
||||||
/// Had to make this an interpreted property since Protobuf can't handle Version
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The version.</value>
|
|
||||||
[JsonIgnore]
|
|
||||||
public Version Version
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_version == null)
|
|
||||||
{
|
|
||||||
var ver = versionStr;
|
|
||||||
_version = new Version(string.IsNullOrEmpty(ver) ? "0.0.0.1" : ver);
|
|
||||||
}
|
|
||||||
|
|
||||||
return _version;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the classification.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The classification.</value>
|
|
||||||
public PackageVersionClass classification { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the description.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The description.</value>
|
|
||||||
public string description { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the required version STR.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The required version STR.</value>
|
|
||||||
public string requiredVersionStr { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the source URL.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The source URL.</value>
|
|
||||||
public string sourceUrl { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the source URL.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The source URL.</value>
|
|
||||||
public string checksum { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the target filename.
|
|
||||||
/// </summary>
|
|
||||||
/// <value>The target filename.</value>
|
|
||||||
public string targetFilename { get; set; }
|
|
||||||
|
|
||||||
public string infoUrl { get; set; }
|
|
||||||
|
|
||||||
public string runtimes { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
58
MediaBrowser.Model/Updates/VersionInfo.cs
Normal file
58
MediaBrowser.Model/Updates/VersionInfo.cs
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Model.Updates
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Class PackageVersionInfo.
|
||||||
|
/// </summary>
|
||||||
|
public class VersionInfo
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the name.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The name.</value>
|
||||||
|
public string name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the guid.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The guid.</value>
|
||||||
|
public string guid { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the version.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The version.</value>
|
||||||
|
public Version version { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the changelog for this version.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The changelog.</value>
|
||||||
|
public string changelog { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the ABI that this version was built against.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The target ABI version.</value>
|
||||||
|
public string targetAbi { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the source URL.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The source URL.</value>
|
||||||
|
public string sourceUrl { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a checksum for the binary.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The checksum.</value>
|
||||||
|
public string checksum { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the target filename for the downloaded binary.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The target filename.</value>
|
||||||
|
public string filename { get; set; }
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user