Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        /// <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());
        }
Ejemplo n.º 3
0
        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
                                                                            ));
        }
Ejemplo n.º 4
0
        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++;
            }
        }