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); }
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)); }