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

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

namespace YandexMusic.API.Requests.Artist;

[YApiRequest(WebRequestMethods.Http.Get, "artists/{artistId}/tracks")]
public class YGetArtistTrackBuilder : YRequestBuilder<YResponse<YTracksPage>, (string id, int page, int pageSize)>
{
    public YGetArtistTrackBuilder(YandexMusicApi yandex, AuthStorage auth) : base(yandex, auth) { }

    protected override Dictionary<string, string> GetSubstitutions((string id, int page, int pageSize) tuple)
    {
        return new Dictionary<string, string> {
            { "artistId", tuple.id },
        };
    }

    protected override NameValueCollection GetQueryParams((string id, int page, int pageSize) tuple)
    {
        return new NameValueCollection {
            { "page", tuple.page.ToString() },
            { "pageSize", tuple.pageSize.ToString() },
        };
    }
}