mirror of
https://github.com/LukeHagar/plexcsharp.git
synced 2025-12-06 12:37:46 +00:00
85 lines
2.6 KiB
C#
85 lines
2.6 KiB
C#
//------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost when
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//------------------------------------------------------------------------------
|
|
#nullable enable
|
|
using System;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace LukeHagar.PlexAPI.SDK.Utils
|
|
{
|
|
internal class EnumConverter : JsonConverter
|
|
{
|
|
public override bool CanConvert(System.Type objectType)
|
|
{
|
|
var nullableType = Nullable.GetUnderlyingType(objectType);
|
|
if (nullableType != null)
|
|
{
|
|
return nullableType.IsEnum;
|
|
}
|
|
|
|
return objectType.IsEnum;
|
|
}
|
|
|
|
public override object? ReadJson(
|
|
JsonReader reader,
|
|
System.Type objectType,
|
|
object? existingValue,
|
|
JsonSerializer serializer
|
|
)
|
|
{
|
|
if (reader.Value == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var extensionType = System.Type.GetType(objectType.FullName + "Extension");
|
|
|
|
if (Nullable.GetUnderlyingType(objectType) != null) {
|
|
objectType = Nullable.GetUnderlyingType(objectType)!;
|
|
extensionType = System.Type.GetType(objectType!.FullName + "Extension");
|
|
}
|
|
|
|
if (extensionType == null)
|
|
{
|
|
return Enum.ToObject(objectType, reader.Value);
|
|
}
|
|
|
|
var method = extensionType.GetMethod("ToEnum");
|
|
if (method == null)
|
|
{
|
|
throw new Exception($"Unable to find ToEnum method on {extensionType.FullName}");
|
|
}
|
|
|
|
try {
|
|
return method.Invoke(null, new[] { (string)reader.Value });
|
|
} catch(System.Reflection.TargetInvocationException e) {
|
|
throw new Newtonsoft.Json.JsonSerializationException("Unable to convert value to enum", e);
|
|
}
|
|
|
|
}
|
|
|
|
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
|
{
|
|
if (value == null)
|
|
{
|
|
writer.WriteValue("null");
|
|
return;
|
|
}
|
|
|
|
var extensionType = System.Type.GetType(value.GetType().FullName + "Extension");
|
|
if (extensionType == null)
|
|
{
|
|
writer.WriteValue(value);
|
|
return;
|
|
}
|
|
|
|
writer.WriteValue(Utilities.ToString(value));
|
|
}
|
|
}
|
|
}
|