Пример #1
0
        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);
        }
Пример #2
0
        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);
                        }
                    }
                }
            }
        }