Пример #1
0
        private string BuildLinkForDownload(YTrackDownloadInfo mainDownloadResponse,
                                            YStorageDownloadFile storageDownload)
        {
            var path  = storageDownload.Path;
            var host  = storageDownload.Host;
            var ts    = storageDownload.Ts;
            var s     = storageDownload.S;
            var codec = mainDownloadResponse.Codec;

            var secret      = $"XGRlBW9FXlekgbPrRHuSiA{path.Substring(1, path.Length - 1)}{s}";
            var md5         = MD5.Create();
            var md5Hash     = md5.ComputeHash(Encoding.UTF8.GetBytes(secret));
            var hmacsha1    = new HMACSHA1();
            var hmasha1Hash = hmacsha1.ComputeHash(md5Hash);
            var sign        = BitConverter.ToString(hmasha1Hash).Replace("-", "").ToLower();

            var link = $"https://{host}/get-{codec}/{sign}/{ts}{path}";

            return(link);
        }
Пример #2
0
 /// <summary>
 /// Получение информации для формирования ссылки для загрузки
 /// </summary>
 /// <param name="storage">Хранилище</param>
 /// <param name="metadataInfo">Метаданные для загрузки</param>
 /// <returns></returns>
 public YStorageDownloadFile GetDownloadFileInfo(AuthStorage storage, YTrackDownloadInfo metadataInfo)
 {
     return(GetDownloadFileInfoAsync(storage, metadataInfo).GetAwaiter().GetResult());
 }
Пример #3
0
 /// <summary>
 /// Получение информации для формирования ссылки для загрузки
 /// </summary>
 /// <param name="storage">Хранилище</param>
 /// <param name="metadataInfo">Метаданные для загрузки</param>
 /// <returns></returns>
 public async Task <YStorageDownloadFile> GetDownloadFileInfoAsync(AuthStorage storage, YTrackDownloadInfo metadataInfo)
 {
     return(await new YStorageDownloadFileRequest(api, storage)
            .Create(metadataInfo.DownloadInfoUrl)
            .GetResponseAsync <YStorageDownloadFile>());
 }