using System.Collections.Specialized; using System.Net; using YandexMusic.API.Models.Common; using YandexMusic.API.Requests.Common; namespace YandexMusic.API.Requests.Track; /// Особый запрос – не к api.music.yandex.net, а к произвольному URL. public class YStorageDownloadFileBuilder : YJsonRequestBuilder { public YStorageDownloadFileBuilder(YandexMusicApi api) : base(api) { } protected override string BaseUrl => ""; // не используется, т.к. URL берётся из параметра protected override string Method => WebRequestMethods.Http.Get; protected override string PathTemplate => "{src}"; protected override Dictionary GetSubstitutions(string src) => new() { { "src", src.Split('?')[0] } }; protected override NameValueCollection GetQueryParams(string src) { var query = new NameValueCollection { { "format", "json" } }; var parts = src.Split('?'); if (parts.Length > 1) { foreach (var param in parts[1].Split('&')) { var kv = param.Split('='); if (kv.Length == 2) query.Add(kv[0], kv[1]); } } return query; } }