public IActionResult CreatePresignedUrl([FromBody] PresignedUrlRequest request) { var requests = request.PartNumbers.Select(partNumber => new GetPreSignedUrlRequest { BucketName = request.BucketName, Key = request.Key, Verb = HttpVerb.PUT, UploadId = request.UploadId, PartNumber = partNumber, ContentType = request.ContentType, Expires = DateTime.UtcNow.AddMinutes(30), }); var responses = new BlockingCollection <CreatePresignedUrlsResponse>(); Parallel.ForEach(requests, (request) => { responses.Add(new CreatePresignedUrlsResponse { PartNumber = request.PartNumber, PresignedUrl = _s3.GetPreSignedURL(request) }); }); return(new OkObjectResult(responses.OrderBy(x => x.PartNumber))); }
/// <inheritdoc/> public IList <CreatePresignedUrlResponse> CreatePresignedUrl(PresignedUrlRequest request, ILambdaContext context) { context.Logger.Log(_environment.GetEnvironmentVariable("BUCKET_NAME")); var presignedUrlRequests = request.PartNumbers.Select(partNumber => new GetPreSignedUrlRequest { BucketName = _environment.GetEnvironmentVariable("BUCKET_NAME"), Key = ConstructFileKey(request.FileName, request.FolderName), Verb = HttpVerb.PUT, UploadId = request.UploadId, PartNumber = partNumber, ContentType = request.ContentType, Expires = DateTime.UtcNow.AddMinutes(30), }); var responseCollection = new BlockingCollection <CreatePresignedUrlResponse>(); Parallel.ForEach(presignedUrlRequests, (request) => { responseCollection.Add(new CreatePresignedUrlResponse { PartNumber = request.PartNumber, PresignedUrl = _s3.GetPreSignedURL(request) }); }); return(responseCollection.OrderBy(x => x.PartNumber).ToList()); }
public void CreatePresignedUrl_should_call_S3_GetPresignedURL() { var request = new PresignedUrlRequest { ContentType = "application/pdf", FileName = "TestFile.pdf", FolderName = "Folder1", PartNumbers = new List <int> { 1, 3, 2, 4, 5 }, UploadId = "42" }; _uploadService.CreatePresignedUrl(request, _context); _s3.Received(5).GetPreSignedURL(Arg.Is <GetPreSignedUrlRequest>(p => p.ContentType == "application/pdf" && p.Key == $"{request.FolderName}/{request.FileName}" && p.UploadId == request.UploadId )); }
public void CreatePresignedUrl_should_return_list_of_PresignedUrlResponse() { var request = new PresignedUrlRequest { ContentType = "application/pdf", FileName = "TestFile.pdf", FolderName = "Folder1", PartNumbers = new List <int> { 1, 3, 2 }, UploadId = "42" }; var response = _uploadService.CreatePresignedUrl(request, _context); var index = 1; foreach (var createPresignedUrlResponse in response) { createPresignedUrlResponse.PartNumber.Should().Be(index); createPresignedUrlResponse.PresignedUrl.Should().Be("presignedUrl.com"); index++; } }