29 lines
1.4 KiB
C#
29 lines
1.4 KiB
C#
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<string?, (YStationDescription station, YStationSettings2 settings2)>
|
|
{
|
|
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<string, string> 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);
|
|
}
|
|
} |