private List <Artifact> GetArtifacts(Test test, ArtifactCategory artifactCategory) { string nextToken = null; List <Artifact> artifacts = new List <Artifact>(); do { var resp = DFClient.ListArtifacts(new ListArtifactsRequest() { NextToken = nextToken, Arn = test.Arn, Type = artifactCategory }); nextToken = resp.NextToken; artifacts.AddRange(resp.Artifacts); } while (nextToken != null); return(artifacts); }
private void DownloadArtifacts(ArtifactCategory category, Dictionary <string, string> references) { var response = client.ListArtifacts(new ListArtifactsRequest { Arn = runArn, Type = category }); var downloaded = 0; foreach (var item in response.Artifacts) { ReportProgress($"Downloading artifact {category.Value} {++downloaded}/{response.Artifacts.Count}"); var downloadRequest = WebRequest.Create(item.Url) as HttpWebRequest; downloadRequest.Method = "GET"; downloadRequest.AllowReadStreamBuffering = false; downloadRequest.Timeout = 9999; var p = item.Arn.Split('/'); var key = $"{p[2]}/{p[3]}/{p[4]}"; var testPath = references[key]; var filename = Path.Combine(testPath, $"{SanitizeFilename(item.Name)}.{item.Extension}"); using (var outStream = new FileStream(filename, FileMode.Create, FileAccess.Write)) { var buffer = new byte[16 * 1024]; int c; using (var inStream = downloadRequest.GetResponse().GetResponseStream()) { while ((c = inStream.Read(buffer, 0, buffer.Length)) > 0) { outStream.Write(buffer, 0, c); } } } } }