Fallback to default guid

This commit is contained in:
BaronGreenback 2020-12-22 14:07:01 +00:00
parent 3633996a53
commit 621e6d28cd
3 changed files with 40 additions and 38 deletions

View File

@ -51,8 +51,18 @@ namespace Emby.Server.Implementations.Plugins
_pluginsPath = pluginsPath; _pluginsPath = pluginsPath;
_appVersion = appVersion ?? throw new ArgumentNullException(nameof(appVersion)); _appVersion = appVersion ?? throw new ArgumentNullException(nameof(appVersion));
_jsonOptions = JsonDefaults.GetOptions(); _jsonOptions = JsonDefaults.GetOptions();
_jsonOptions.Converters.Add(new JsonGuidDashConverter());
_jsonOptions.WriteIndented = true; _jsonOptions.WriteIndented = true;
// We need to use the default GUID converter, so we need to remove any custom ones.
for (int a = _jsonOptions.Converters.Count - 1; a >= 0; a--)
{
if (_jsonOptions.Converters[a] is JsonGuidConverter convertor)
{
_jsonOptions.Converters.Remove(convertor);
break;
}
}
_config = config; _config = config;
_appHost = appHost; _appHost = appHost;
_minimumVersion = new Version(0, 0, 0, 1); _minimumVersion = new Version(0, 0, 0, 1);

View File

@ -1,26 +0,0 @@
using System;
using System.Globalization;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace MediaBrowser.Common.Json.Converters
{
/// <summary>
/// Converts a GUID object or value to/from JSON.
/// </summary>
public class JsonGuidDashConverter : JsonConverter<Guid>
{
/// <inheritdoc />
public override Guid Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var guidStr = reader.GetString();
return guidStr == null ? Guid.Empty : new Guid(guidStr);
}
/// <inheritdoc />
public override void Write(Utf8JsonWriter writer, Guid value, JsonSerializerOptions options)
{
writer.WriteStringValue(value.ToString());
}
}
}

View File

@ -1,7 +1,7 @@
#nullable enable #nullable enable
using System; using System;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using MediaBrowser.Common.Json.Converters;
using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Plugins;
namespace MediaBrowser.Common.Plugins namespace MediaBrowser.Common.Plugins
@ -11,54 +11,71 @@ namespace MediaBrowser.Common.Plugins
/// </summary> /// </summary>
public class PluginManifest public class PluginManifest
{ {
/// <summary>
/// Initializes a new instance of the <see cref="PluginManifest"/> class.
/// </summary>
public PluginManifest()
{
Category = string.Empty;
Changelog = string.Empty;
Description = string.Empty;
Status = PluginStatus.Active;
Id = Guid.Empty;
Name = string.Empty;
Owner = string.Empty;
Overview = string.Empty;
TargetAbi = string.Empty;
Version = string.Empty;
AutoUpdate = true;
}
/// <summary> /// <summary>
/// Gets or sets the category of the plugin. /// Gets or sets the category of the plugin.
/// </summary> /// </summary>
[JsonPropertyName("category")] [JsonPropertyName("category")]
public string Category { get; set; } = string.Empty; public string Category { get; set; }
/// <summary> /// <summary>
/// Gets or sets the changelog information. /// Gets or sets the changelog information.
/// </summary> /// </summary>
[JsonPropertyName("changelog")] [JsonPropertyName("changelog")]
public string Changelog { get; set; } = string.Empty; public string Changelog { get; set; }
/// <summary> /// <summary>
/// Gets or sets the description of the plugin. /// Gets or sets the description of the plugin.
/// </summary> /// </summary>
[JsonPropertyName("description")] [JsonPropertyName("description")]
public string Description { get; set; } = string.Empty; public string Description { get; set; }
/// <summary> /// <summary>
/// Gets or sets the Global Unique Identifier for the plugin. /// Gets or sets the Global Unique Identifier for the plugin.
/// </summary> /// </summary>
[JsonPropertyName("guid")] [JsonPropertyName("guid")]
[JsonConverter(typeof(JsonGuidDashConverter))]
public Guid Id { get; set; } public Guid Id { get; set; }
/// <summary> /// <summary>
/// Gets or sets the Name of the plugin. /// Gets or sets the Name of the plugin.
/// </summary> /// </summary>
[JsonPropertyName("name")] [JsonPropertyName("name")]
public string Name { get; set; } = string.Empty; public string Name { get; set; }
/// <summary> /// <summary>
/// Gets or sets an overview of the plugin. /// Gets or sets an overview of the plugin.
/// </summary> /// </summary>
[JsonPropertyName("overview")] [JsonPropertyName("overview")]
public string Overview { get; set; } = string.Empty; public string Overview { get; set; }
/// <summary> /// <summary>
/// Gets or sets the owner of the plugin. /// Gets or sets the owner of the plugin.
/// </summary> /// </summary>
[JsonPropertyName("owner")] [JsonPropertyName("owner")]
public string Owner { get; set; } = string.Empty; public string Owner { get; set; }
/// <summary> /// <summary>
/// Gets or sets the compatibility version for the plugin. /// Gets or sets the compatibility version for the plugin.
/// </summary> /// </summary>
[JsonPropertyName("targetAbi")] [JsonPropertyName("targetAbi")]
public string TargetAbi { get; set; } = string.Empty; public string TargetAbi { get; set; }
/// <summary> /// <summary>
/// Gets or sets the timestamp of the plugin. /// Gets or sets the timestamp of the plugin.
@ -70,7 +87,7 @@ namespace MediaBrowser.Common.Plugins
/// Gets or sets the Version number of the plugin. /// Gets or sets the Version number of the plugin.
/// </summary> /// </summary>
[JsonPropertyName("version")] [JsonPropertyName("version")]
public string Version { get; set; } = string.Empty; public string Version { get; set; }
/// <summary> /// <summary>
/// Gets or sets a value indicating the operational status of this plugin. /// Gets or sets a value indicating the operational status of this plugin.
@ -82,9 +99,10 @@ namespace MediaBrowser.Common.Plugins
/// Gets or sets a value indicating whether this plugin should automatically update. /// Gets or sets a value indicating whether this plugin should automatically update.
/// </summary> /// </summary>
[JsonPropertyName("autoUpdate")] [JsonPropertyName("autoUpdate")]
public bool AutoUpdate { get; set; } = true; public bool AutoUpdate { get; set; }
/// <summary> /// <summary>
/// Gets or sets the ImagePath
/// Gets or sets a value indicating whether this plugin has an image. /// Gets or sets a value indicating whether this plugin has an image.
/// Image must be located in the local plugin folder. /// Image must be located in the local plugin folder.
/// </summary> /// </summary>