using System.Collections.Specialized;
using System.Net;

using YandexMusic.API.Common;
using YandexMusic.API.Models.Common;
using YandexMusic.API.Models.Radio;
using YandexMusic.API.Requests.Common;
using YandexMusic.API.Requests.Common.Attributes;

namespace YandexMusic.API.Requests.Radio;

[YApiRequest(WebRequestMethods.Http.Get, "rotor/station/{type}:{tag}/tracks")]
public class YGetStationTracksBuilder : YRequestBuilder<YResponse<YStationSequence>, (YStationDescription station, string prevTrackId)>
{
    public YGetStationTracksBuilder(YandexMusicApi yandex, AuthStorage auth) : base(yandex, auth)
    {
    }

    protected override Dictionary<string, string> GetSubstitutions((YStationDescription station, string prevTrackId) tuple)
    {
        return new Dictionary<string, string> {
            { "type", tuple.station.Id.Type },
            { "tag", tuple.station.Id.Tag },
        };
    }

    protected override NameValueCollection GetQueryParams((YStationDescription station, string prevTrackId) tuple)
    {
        NameValueCollection query = new() {
            { "settings2", "true" }
        };

        if (!string.IsNullOrEmpty(tuple.prevTrackId))
            query.Add("queue", tuple.prevTrackId);

        return base.GetQueryParams(tuple);
    }
}