|
@@ -31,11 +31,6 @@ namespace Emby.Server.Implementations.Updates
|
|
|
/// </summary>
|
|
|
public class InstallationManager : IInstallationManager
|
|
|
{
|
|
|
- /// <summary>
|
|
|
- /// The key for a setting that specifies a URL for the plugin repository JSON manifest.
|
|
|
- /// </summary>
|
|
|
- public const string PluginManifestUrlKey = "InstallationManager:PluginManifestUrl";
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// The logger.
|
|
|
/// </summary>
|
|
@@ -122,16 +117,14 @@ namespace Emby.Server.Implementations.Updates
|
|
|
public IEnumerable<InstallationInfo> CompletedInstallations => _completedInstallationsInternal;
|
|
|
|
|
|
/// <inheritdoc />
|
|
|
- public async Task<IReadOnlyList<PackageInfo>> GetAvailablePackages(CancellationToken cancellationToken = default)
|
|
|
+ public async Task<IEnumerable<PackageInfo>> GetPackages(string manifest, CancellationToken cancellationToken = default)
|
|
|
{
|
|
|
- var manifestUrl = _appConfig.GetValue<string>(PluginManifestUrlKey);
|
|
|
-
|
|
|
try
|
|
|
{
|
|
|
using (var response = await _httpClient.SendAsync(
|
|
|
new HttpRequestOptions
|
|
|
{
|
|
|
- Url = manifestUrl,
|
|
|
+ Url = manifest,
|
|
|
CancellationToken = cancellationToken,
|
|
|
CacheMode = CacheMode.Unconditional,
|
|
|
CacheLength = TimeSpan.FromMinutes(3)
|
|
@@ -145,25 +138,35 @@ namespace Emby.Server.Implementations.Updates
|
|
|
}
|
|
|
catch (SerializationException ex)
|
|
|
{
|
|
|
- const string LogTemplate =
|
|
|
- "Failed to deserialize the plugin manifest retrieved from {PluginManifestUrl}. If you " +
|
|
|
- "have specified a custom plugin repository manifest URL with --plugin-manifest-url or " +
|
|
|
- PluginManifestUrlKey + ", please ensure that it is correct.";
|
|
|
- _logger.LogError(ex, LogTemplate, manifestUrl);
|
|
|
+ _logger.LogError(ex, "Failed to deserialize the plugin manifest retrieved from {Manifest}", manifest);
|
|
|
throw;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (UriFormatException ex)
|
|
|
{
|
|
|
- const string LogTemplate =
|
|
|
- "The URL configured for the plugin repository manifest URL is not valid: {PluginManifestUrl}. " +
|
|
|
- "Please check the URL configured by --plugin-manifest-url or " + PluginManifestUrlKey;
|
|
|
- _logger.LogError(ex, LogTemplate, manifestUrl);
|
|
|
+ _logger.LogError(ex, "The URL configured for the plugin repository manifest URL is not valid: {Manifest}", manifest);
|
|
|
throw;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <inheritdoc />
|
|
|
+ public async Task<IReadOnlyList<PackageInfo>> GetAvailablePackages(CancellationToken cancellationToken = default)
|
|
|
+ {
|
|
|
+ var result = new List<PackageInfo>();
|
|
|
+ foreach (RepositoryInfo repository in _config.Configuration.PluginRepositories)
|
|
|
+ {
|
|
|
+ if (!repository.Enabled)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ result.AddRange(await GetPackages(repository.Url, cancellationToken).ConfigureAwait(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ return result.ToList().AsReadOnly();
|
|
|
+ }
|
|
|
+
|
|
|
/// <inheritdoc />
|
|
|
public IEnumerable<PackageInfo> FilterPackages(
|
|
|
IEnumerable<PackageInfo> availablePackages,
|