using System.Net;

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

namespace YandexMusic.API.Requests.Library;

[YApiRequest(WebRequestMethods.Http.Post, "users/{uid}/{type}/{section}/remove")]
public class YLibraryRemoveBuilder<T> : YRequestBuilder<YResponse<T>, (string id, YLibrarySection section, YLibrarySectionType type)>
{
    public YLibraryRemoveBuilder(YandexMusicApi yandex, AuthStorage auth) : base(yandex, auth)
    {
    }

    protected override Dictionary<string, string> GetSubstitutions((string id, YLibrarySection section, YLibrarySectionType type) tuple)
    {
        return new Dictionary<string, string> {
            { "uid", storage.User.Uid },
            { "type", tuple.type.ToString().ToLower() },
            { "section", tuple.section.ToString().ToLower() },
        };
    }

    protected override HttpContent GetContent((string id, YLibrarySection section, YLibrarySectionType type) tuple)
    {
        return new FormUrlEncodedContent(new Dictionary<string, string> {
            { $"{tuple.section.ToString().ToLower().TrimEnd('s')}-ids", tuple.id }
        });
    }
}