using YandexMusic.API.Models.Common; namespace YandexMusic.API.Common.Providers { public class CommonRequestProvider : IRequestProvider { #region Поля protected AuthStorage storage; #endregion Поля public CommonRequestProvider(AuthStorage authStorage) { storage = authStorage; } #region IRequestProvider public virtual Task GetWebResponseAsync(HttpRequestMessage message, HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead) { throw new NotImplementedException(); } public virtual async Task GetDataFromResponseAsync(YandexMusicApi api, HttpResponseMessage response) { string result = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { YErrorResponse exception = JsonConvert.DeserializeObject(result); throw exception ?? new Exception("Ошибка десериализации ответа с ошибкой."); } try { JsonSerializerSettings settings = new() { Converters = new List { new YExecutionContextConverter(api, storage) } }; return storage.Debug != null ? storage.Debug.Deserialize(response.RequestMessage?.RequestUri?.AbsolutePath, result, settings) : JsonConvert.DeserializeObject(result, settings); } catch (Exception ex) { throw new Exception($"Ошибка десериализации {ex}"); } } #endregion IRequestProvider } }