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

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

namespace YandexMusic.API.Requests.Track;

[YRequest(WebRequestMethods.Http.Get, "{src}")]
public class YStorageDownloadFileBuilder : YRequestBuilder<YStorageDownloadFile, string>
{
    public YStorageDownloadFileBuilder(YandexMusicApi yandex, AuthStorage auth) : base(yandex, auth)
    {
    }

    protected override Dictionary<string, string> GetSubstitutions(string src)
    {
        return new Dictionary<string, string> {
            { "src", src.Split('?')[0] }
        };
    }

    protected override NameValueCollection GetQueryParams(string src)
    {
        NameValueCollection query = new() {
            { "format", "json" }
        };

        src.Split('?')[1]
            .Split('&')
            .ToList()
            .ForEach(p =>
            {
                string[] param = p.Split('=');
                query.Add(param[0], param[1]);
            });

        return query;
    }
}