public void Setup()
        {
            compressedFileKey = "compressed-file";

            flatZipFile = true;

            request = new Request("origin-bucket", "origin-resource", "destination-bucket", compressedFileKey, flatZipFile);

            files = new []
            {
                new FileResponse("file-0", contentStream: new MemoryStream()),
                new FileResponse("file-1", contentStream: new MemoryStream()),
                new FileResponse("file-2", contentStream: new MemoryStream()),
                new FileResponse("file-3", contentStream: new MemoryStream()),
            };

            compressedFile = new FileResponse(compressedFileKey, contentStream: new MemoryStream());

            url = "s3.com/compressed-file";

            cancellationToken = CancellationToken.None;

            fileRetriever = Substitute.For <IFileRetriever>();
            fileRetriever.RetrieveToMemory(request.OriginBucketName, request.OriginResourceName, Arg.Any <string>(), cancellationToken).Returns(files);

            fileZipper = Substitute.For <IFileZipper>();
            fileZipper.Compress(compressedFileKey, files, flatZipFile, cancellationToken).Returns(compressedFile);

            fileUploader = Substitute.For <IFileUploader>();
            fileUploader.Upload("destination-bucket", compressedFileKey, compressedFile, cancellationToken).Returns(url);

            service = new Service(fileRetriever, fileZipper, fileUploader);
        }
Exemplo n.º 2
0
        public async Task <Response> Process(Request request, CancellationToken cancellationToken = default)
        {
            var stopwatch = Stopwatch.StartNew();

            var files = await fileRetriever.RetrieveToMemory(request.OriginBucketName, request.OriginResourceName, request.OriginResourceExpressionPattern, cancellationToken);

            log.Debug("Retrieved files from {Bucket}:{Resource} | {Time}ms", request.OriginBucketName, request.OriginResourceName, stopwatch.ElapsedMilliseconds);

            stopwatch.Restart();
            var compressedFile = await fileZipper.Compress(request.DestinationResourceName, files, request.FlatZipFile, cancellationToken);

            log.Debug("Compressed files to {CompressedFileName} | {Time}ms", compressedFile.ResourceKey, stopwatch.ElapsedMilliseconds);

            stopwatch.Restart();
            var url = await fileUploader.Upload(request.DestinationBucketName, request.DestinationResourceName, compressedFile, cancellationToken);

            log.Debug("Uploaded file to {Url} | {Time}ms", url, stopwatch.ElapsedMilliseconds);

            return(new Response(url));
        }