Files
YandexMusic/YandexMusic.API/Models/Radio/Restriction/YRestriction.cs
2026-04-10 12:12:33 +03:00

55 lines
1.7 KiB
C#

namespace YandexMusic.API.Models.Radio.Restriction
{
public sealed class YRestrictionConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(YRestriction).IsAssignableFrom(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
return null;
JObject jObject = JObject.Load(reader);
YRestriction restriction;
try
{
YRestrictionType type = jObject["type"].ToObject<YRestrictionType>();
switch (type)
{
case YRestrictionType.Enum:
restriction = jObject.ToObject<YRestrictionEnum>();
break;
case YRestrictionType.DiscreteScale:
restriction = jObject.ToObject<YRestrictionDiscreteScale>();
break;
default:
restriction = jObject.ToObject<YRestriction>();
break;
}
}
catch (Exception ex)
{
throw new Exception($"Ошибка десериализации типа \"{objectType.Name}\".", ex);
}
return restriction;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
public class YRestriction
{
public string Name { get; set; }
public YRestrictionType Type { get; set; }
}
}