Обнновлено до .net10

This commit is contained in:
FrigaT
2026-04-10 15:05:32 +03:00
parent 11d0b0d72f
commit 8444fc5f8e
386 changed files with 6361 additions and 7164 deletions

View File

@@ -1,70 +1,14 @@
using System.Text.Json.Serialization;
using YandexMusic.API.Models.Common;
using YandexMusic.API.Models.Search.Album;
using YandexMusic.API.Models.Search.Artist;
using YandexMusic.API.Models.Search.Playlist;
using YandexMusic.API.Models.Search.Track;
using YandexMusic.API.Models.Search.Video;
namespace YandexMusic.API.Models.Search
namespace YandexMusic.API.Models.Search;
/// <summary>Лучший результат поиска.</summary>
[JsonConverter(typeof(YSearchBestConverter))]
public class YSearchBest
{
/// <summary>
/// Конвертер для поля Result
/// </summary>
internal class YSearchBestConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
throw new NotImplementedException();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
return null;
JObject obj = JObject.Load(reader);
JsonObjectContract contract = (JsonObjectContract)serializer.ContractResolver.ResolveContract(objectType);
YSearchBest best = existingValue as YSearchBest ?? (YSearchBest)contract.DefaultCreator();
best.Type = (YSearchType)Enum.Parse(typeof(YSearchType), obj["type"].ToString(), true);
switch (best.Type)
{
case YSearchType.Track:
best.Result = JsonConvert.DeserializeObject<YSearchTrackModel>(obj["result"].ToString());
break;
case YSearchType.Album:
best.Result = JsonConvert.DeserializeObject<YSearchAlbumModel>(obj["result"].ToString());
break;
case YSearchType.Artist:
best.Result = JsonConvert.DeserializeObject<YSearchArtistModel>(obj["result"].ToString());
break;
case YSearchType.Playlist:
best.Result = JsonConvert.DeserializeObject<YSearchPlaylistModel>(obj["result"].ToString());
break;
case YSearchType.PodcastEpisode:
best.Result = JsonConvert.DeserializeObject<YSearchTrackModel>(obj["result"].ToString());
break;
case YSearchType.Video:
best.Result = JsonConvert.DeserializeObject<YSearchVideoModel>(obj["result"].ToString());
break;
}
return best;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanWrite => false;
}
[JsonConverter(typeof(YSearchBestConverter))]
public class YSearchBest
{
public dynamic Result { get; set; }
public YSearchType Type { get; set; }
}
/// <summary>Тип найденного объекта.</summary>
public YSearchType Type { get; set; }
/// <summary>Найденный объект (тип зависит от Type).</summary>
public object? Result { get; set; }
}