public void GetDownloadFileInfo_ValidData_True() { downloadInfo.Count.Should().BePositive(); downloadFile = Fixture.API.TrackAPI.GetDownloadFileInfo(Fixture.Storage, downloadInfo.First(m => m.Codec == "mp3")); downloadFile.Path.Should().NotBeNullOrEmpty(); }
private string BuildLinkForDownload(YTrackDownloadInfoResponse mainDownloadResponse, YStorageDownloadFileResponse storageDownloadResponse) { var path = storageDownloadResponse.Path; var host = storageDownloadResponse.Host; var ts = storageDownloadResponse.Ts; var s = storageDownloadResponse.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); }
public async Task <YStorageDownloadFileResponse> GetDownloadFilInfoAsync(YTrackDownloadInfoResponse metadataInfo, long time) { var request = new YStorageDownloadFileRequest(_httpContext).Create(metadataInfo.Src, time, User.Login); var data = default(JToken); using (var response = (HttpWebResponse)await request.GetResponseAsync()) { var result = ""; using (var stream = response.GetResponseStream()) { var reader = new StreamReader(stream); result = await reader.ReadToEndAsync(); } data = JToken.Parse(result); _httpContext.Cookies.Add(response.Cookies); } return(YStorageDownloadFileResponse.FromJson(data)); }