2
0
Greenback 4 жил өмнө
parent
commit
eb2439f23b

+ 1 - 1
Emby.Server.Implementations/ApplicationHost.cs

@@ -396,7 +396,7 @@ namespace Emby.Server.Implementations
                 Logger.LogError("DI Loop detected in the attempted creation of {Type}", type.FullName);
                 foreach (var entry in _creatingInstances)
                 {
-                    Logger.LogError("Called from: {stack}", entry.FullName);
+                    Logger.LogError("Called from: {TypeName}", entry.FullName);
                 }
 
                 _pluginManager.FailPlugin(type.Assembly);

+ 23 - 36
Emby.Server.Implementations/Plugins/PluginManager.cs

@@ -96,9 +96,10 @@ namespace Emby.Server.Implementations
 
                 foreach (var file in plugin.DllFiles)
                 {
+                    Assembly assembly;
                     try
                     {
-                        plugin.Assembly = Assembly.LoadFrom(file);
+                        assembly = Assembly.LoadFrom(file);
                     }
                     catch (FileLoadException ex)
                     {
@@ -107,8 +108,8 @@ namespace Emby.Server.Implementations
                         continue;
                     }
 
-                    _logger.LogInformation("Loaded assembly {Assembly} from {Path}", plugin.Assembly.FullName, file);
-                    yield return plugin.Assembly;
+                    _logger.LogInformation("Loaded assembly {Assembly} from {Path}", assembly.FullName, file);
+                    yield return assembly;
                 }
             }
         }
@@ -203,6 +204,7 @@ namespace Emby.Server.Implementations
                 return true;
             }
 
+            _logger.LogWarning("Unable to delete {Path}, so marking as deleteOnStartup.", plugin.Path);
             // Unable to delete, so disable.
             return ChangePluginState(plugin, PluginStatus.DeleteOnStartup);
         }
@@ -310,10 +312,7 @@ namespace Emby.Server.Implementations
                 throw new ArgumentNullException(nameof(assembly));
             }
 
-            var plugin = _plugins.Where(
-                    p => assembly.Equals(p.Assembly)
-                    || string.Equals(assembly.Location, assembly.Location, StringComparison.OrdinalIgnoreCase))
-                .FirstOrDefault();
+            var plugin = _plugins.Where(p => p.DllFiles.Contains(assembly.Location)).FirstOrDefault();
             if (plugin == null)
             {
                 // A plugin's assembly didn't cause this issue, so ignore it.
@@ -366,20 +365,7 @@ namespace Emby.Server.Implementations
             }
 
             plugin.Manifest.Status = state;
-            SaveManifest(plugin.Manifest, plugin.Path);
-            try
-            {
-                var data = JsonSerializer.Serialize(plugin.Manifest, _jsonOptions);
-                File.WriteAllText(Path.Combine(plugin.Path, "meta.json"), data, Encoding.UTF8);
-                return true;
-            }
-#pragma warning disable CA1031 // Do not catch general exception types
-            catch (Exception e)
-#pragma warning restore CA1031 // Do not catch general exception types
-            {
-                _logger.LogWarning(e, "Unable to disable plugin {Path}", plugin.Path);
-                return false;
-            }
+            return SaveManifest(plugin.Manifest, plugin.Path);
         }
 
         /// <summary>
@@ -509,15 +495,14 @@ namespace Emby.Server.Implementations
             // Attempt a cleanup of old folders.
             try
             {
-                _logger.LogDebug("Deleting {Path}", plugin.Path);
                 Directory.Delete(plugin.Path, true);
+                _logger.LogDebug("Deleted {Path}", plugin.Path);
                 _plugins.Remove(plugin);
             }
 #pragma warning disable CA1031 // Do not catch general exception types
-            catch (Exception e)
+            catch
 #pragma warning restore CA1031 // Do not catch general exception types
             {
-                _logger.LogWarning(e, "Unable to delete {Path}", plugin.Path);
                 return false;
             }
 
@@ -670,21 +655,23 @@ namespace Emby.Server.Implementations
                         _logger.LogWarning(e, "Unable to delete {Path}", path);
                     }
 
-                    versions.RemoveAt(x);
-                }
-
-                if (!cleaned)
-                {
-                    if (manifest == null)
+                    if (cleaned)
                     {
-                        _logger.LogWarning("Unable to disable plugin {Path}", entry.Path);
-                        continue;
+                        versions.RemoveAt(x);
                     }
-
-                    if (manifest.Status != PluginStatus.DeleteOnStartup)
+                    else
                     {
-                        manifest.Status = PluginStatus.DeleteOnStartup;
-                        SaveManifest(manifest, entry.Path);
+                        if (manifest == null)
+                        {
+                            _logger.LogWarning("Unable to disable plugin {Path}", entry.Path);
+                            continue;
+                        }
+
+                        if (manifest.Status != PluginStatus.DeleteOnStartup)
+                        {
+                            manifest.Status = PluginStatus.DeleteOnStartup;
+                            SaveManifest(manifest, entry.Path);
+                        }
                     }
                 }
             }

+ 2 - 13
Emby.Server.Implementations/Updates/InstallationManager.cs

@@ -8,7 +8,6 @@ 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;
@@ -106,18 +105,8 @@ namespace Emby.Server.Implementations.Updates
             try
             {
                 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);
-                }
+                packages = await _httpClientFactory.CreateClient(NamedClient.Default)
+                        .GetFromJsonAsync<List<PackageInfo>>(new Uri(manifest), _jsonSerializerOptions, cancellationToken).ConfigureAwait(false);
 
                 if (packages == null)
                 {

+ 0 - 2
Jellyfin.Api/Controllers/PackageController.cs

@@ -44,7 +44,6 @@ namespace Jellyfin.Api.Controllers
         /// <returns>A <see cref="PackageInfo"/> containing package information.</returns>
         [HttpGet("Packages/{name}")]
         [ProducesResponseType(StatusCodes.Status200OK)]
-        [Produces(JsonDefaults.CamelCaseMediaType)]
         public async Task<ActionResult<PackageInfo>> GetPackageInfo(
             [FromRoute, Required] string name,
             [FromQuery] Guid? assemblyGuid)
@@ -71,7 +70,6 @@ namespace Jellyfin.Api.Controllers
         /// <returns>An <see cref="PackageInfo"/> containing available packages information.</returns>
         [HttpGet("Packages")]
         [ProducesResponseType(StatusCodes.Status200OK)]
-        [Produces(JsonDefaults.CamelCaseMediaType)]
         public async Task<IEnumerable<PackageInfo>> GetPackages()
         {
             IEnumerable<PackageInfo> packages = await _installationManager.GetAvailablePackages().ConfigureAwait(false);

+ 0 - 5
MediaBrowser.Common/Plugins/LocalPlugin.cs

@@ -80,11 +80,6 @@ namespace MediaBrowser.Common.Plugins
         /// </summary>
         public PluginManifest Manifest { get; }
 
-        /// <summary>
-        /// Gets or sets a value indicating the assembly of the plugin.
-        /// </summary>
-        public Assembly? Assembly { get; set; }
-
         /// <summary>
         /// Compare two <see cref="LocalPlugin"/>.
         /// </summary>

+ 9 - 0
MediaBrowser.Model/Updates/PackageInfo.cs

@@ -1,6 +1,7 @@
 #nullable enable
 using System;
 using System.Collections.Generic;
+using System.Text.Json.Serialization;
 
 namespace MediaBrowser.Model.Updates
 {
@@ -27,30 +28,35 @@ namespace MediaBrowser.Model.Updates
         /// Gets or sets the name.
         /// </summary>
         /// <value>The name.</value>
+        [JsonPropertyName("name")]
         public string Name { get; set; }
 
         /// <summary>
         /// Gets or sets a long description of the plugin containing features or helpful explanations.
         /// </summary>
         /// <value>The description.</value>
+        /// [JsonPropertyName("description")]
         public string Description { get; set; }
 
         /// <summary>
         /// Gets or sets a short overview of what the plugin does.
         /// </summary>
         /// <value>The overview.</value>
+        [JsonPropertyName("overview")]
         public string Overview { get; set; }
 
         /// <summary>
         /// Gets or sets the owner.
         /// </summary>
         /// <value>The owner.</value>
+        [JsonPropertyName("owner")]
         public string Owner { get; set; }
 
         /// <summary>
         /// Gets or sets the category.
         /// </summary>
         /// <value>The category.</value>
+        [JsonPropertyName("category")]
         public string Category { get; set; }
 
         /// <summary>
@@ -58,6 +64,7 @@ namespace MediaBrowser.Model.Updates
         /// This is used to identify the proper item for automatic updates.
         /// </summary>
         /// <value>The name.</value>
+        [JsonPropertyName("guid")]
 #pragma warning disable CA1720 // Identifier contains type name
         public string Guid { get; set; }
 #pragma warning restore CA1720 // Identifier contains type name
@@ -66,6 +73,7 @@ namespace MediaBrowser.Model.Updates
         /// Gets or sets the versions.
         /// </summary>
         /// <value>The versions.</value>
+        [JsonPropertyName("versions")]
 #pragma warning disable CA2227 // Collection properties should be read only
         public IList<VersionInfo> Versions { get; set; }
 #pragma warning restore CA2227 // Collection properties should be read only
@@ -73,6 +81,7 @@ namespace MediaBrowser.Model.Updates
         /// <summary>
         /// Gets or sets the image url for the package.
         /// </summary>
+        [JsonPropertyName("imageUrl")]
         public string? ImageUrl { get; set; }
     }
 }