using System.Net; using System.Net.Http.Headers; using System.Net.Http.Json; using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Serialization; using YandexMusic.API.Models.Radio; namespace YandexMusic.API.Requests.Radio; internal class YSetSettings2Builder : YMusicRequestBuilder { public YSetSettings2Builder(YandexMusicApi api) : base(api) { } protected override string Method => WebRequestMethods.Http.Post; protected override string PathTemplate => "rotor/station/{type}:{tag}/settings2"; protected override Dictionary GetSubstitutions((YStationDescription station, YStationSettings2 settings2) tuple) => new() { { "type", tuple.station.Id.Type }, { "tag", tuple.station.Id.Tag } }; protected override HttpContent? GetContent((YStationDescription station, YStationSettings2 settings2) tuple) { var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, Converters = { new JsonStringEnumConverter() } }; return JsonContent.Create(tuple.settings2, new MediaTypeHeaderValue("application/json"), options); } }