Enable local file repositories

This commit is contained in:
Greenback 2020-12-15 01:13:11 +00:00
parent 356d92cd71
commit 0d4aa6bad6

View File

@ -8,6 +8,7 @@ using System.Linq;
using System.Net.Http;
using System.Net.Http.Json;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
@ -105,8 +106,20 @@ namespace Emby.Server.Implementations.Updates
{
try
{
var packages = await _httpClientFactory.CreateClient(NamedClient.Default)
.GetFromJsonAsync<List<PackageInfo>>(new Uri(manifest), _jsonSerializerOptions, cancellationToken).ConfigureAwait(false);
List<PackageInfo>? packages;
var uri = new Uri(manifest);
if (uri.Scheme.StartsWith("http", StringComparison.OrdinalIgnoreCase))
{
packages = await _httpClientFactory.CreateClient(NamedClient.Default)
.GetFromJsonAsync<List<PackageInfo>>(uri, _jsonSerializerOptions, cancellationToken).ConfigureAwait(false);
}
else
{
// Local Packages
var data = File.ReadAllText(manifest, Encoding.UTF8);
packages = JsonSerializer.Deserialize<List<PackageInfo>>(data, _jsonSerializerOptions);
}
if (packages == null)
{
return Array.Empty<PackageInfo>();
@ -150,6 +163,11 @@ namespace Emby.Server.Implementations.Updates
return packages;
}
catch (IOException ex)
{
_logger.LogError(ex, "Cannot locate the plugin manifest {Manifest}", manifest);
return Array.Empty<PackageInfo>();
}
catch (JsonException ex)
{
_logger.LogError(ex, "Failed to deserialize the plugin manifest retrieved from {Manifest}", manifest);