Exemple #1
0
        private async Task ResolveFileReference(DownloadReferenceDto downloadReferenceDto)
        {
            var response = await _fileClientService.DownloadFileFromRemote(downloadReferenceDto);

            await _ticketClientService.FinalizeTicket(downloadReferenceDto.TicketId);

            await _fileClientService.ValidateFileChecksum(int.Parse(response.Content));
        }
Exemple #2
0
        public async Task <IRestResponse> DownloadFileFromRemote(DownloadReferenceDto downloadReferenceDto)
        {
            var request = new RestRequest(string.Empty, Method.POST);

            request.AddJsonBody(downloadReferenceDto);
            var response = await _restClient.ExecuteAsync(request);

            return(response);
        }
Exemple #3
0
        public async Task <ActionResult <int> > DownloadFileFromRemote(DownloadReferenceDto downloadReferenceDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var fileReferenceId = await _fileManagerService.DownloadFileFromSource(downloadReferenceDto);

            return(Ok(fileReferenceId));
        }
Exemple #4
0
        private static bool IsProcessedFileReferenceValid(TicketDto ticketDto, DownloadReferenceDto downloadReferenceDto)
        {
            if (ticketDto.Sha256Checksum is not null)
            {
                return(ticketDto.Id.Equals(downloadReferenceDto.TicketId) &&
                       ticketDto.Sha256Checksum.Equals(downloadReferenceDto.Sha256Checksum) &&
                       ticketDto.DownloadUrl.Equals(downloadReferenceDto.DownloadUrl));
            }

            return(ticketDto.Id.Equals(downloadReferenceDto.TicketId) &&
                   ticketDto.DownloadUrl.Equals(downloadReferenceDto.DownloadUrl));
        }
        public void RETURN_FALSE_IF_TICKET_ID_EQUALS_ZERO()
        {
            DownloadReferenceDtoValidator objectUnderTest = new DownloadReferenceDtoValidator();

            var testData = new DownloadReferenceDto()
            {
                DownloadUrl    = "http://127.0.0.1/test",
                Sha256Checksum = "test",
                TicketId       = 0
            };

            var result = objectUnderTest.Validate(testData);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.IsValid);
        }
        public void RETURN_FALSE_IF_DOWNLOAD_URL_IS_EMPTY()
        {
            DownloadReferenceDtoValidator objectUnderTest = new DownloadReferenceDtoValidator();

            var testData = new DownloadReferenceDto()
            {
                DownloadUrl    = "",
                Sha256Checksum = "test",
                TicketId       = 1
            };

            var result = objectUnderTest.Validate(testData);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.IsValid);
        }
        public void RETURN_TRUE_IF_DATA_IS_VALID()
        {
            DownloadReferenceDtoValidator objectUnderTest = new DownloadReferenceDtoValidator();

            var testData = new DownloadReferenceDto()
            {
                DownloadUrl    = "http://127.0.0.1/test",
                Sha256Checksum = "test",
                TicketId       = 1
            };

            var result = objectUnderTest.Validate(testData);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.IsValid);
        }
Exemple #8
0
        public async Task <IActionResult> Resolver(DownloadReferenceDto downloadReferenceDto)
        {
            var validationContext = new ValidationContext <DownloadReferenceDto>(downloadReferenceDto);

            if (!_downloadReferenceDtoValidator.Validate(validationContext).IsValid)
            {
                return(RedirectToAction("Error"));
            }

            var ticketReference = await _ticketClientService.GetTicket(downloadReferenceDto.TicketId);

            if (ticketReference is null || !IsProcessedFileReferenceValid(ticketReference, downloadReferenceDto))
            {
                return(RedirectToAction("Error"));
            }

            _ = Task.Run(() => ResolveFileReference(downloadReferenceDto));

            return(RedirectToAction("Index"));
        }
Exemple #9
0
        public async Task <int> DownloadFileFromSource(DownloadReferenceDto downloadReferenceDto)
        {
            string fileName = downloadReferenceDto.DownloadUrl.Split("/").Last();
            string filePath = BASE_FILESTORE_PATH + Path.DirectorySeparatorChar + fileName;
            await _httpWebClientProxy.DownloadFileFromUrl(downloadReferenceDto.DownloadUrl, filePath);

            var result = await _dbContext.FileReferences.AddAsync(new FileReference()
            {
                TicketId                  = downloadReferenceDto.TicketId,
                FileName                  = fileName,
                Path                      = filePath,
                Sha256Checksum            = ComputeFileSHA256Checksum(filePath),
                UploadDate                = DateTime.Now,
                ChecksumMatchWithDeclared = false,
                ChecksumMatchWithRemote   = false
            });

            await _dbContext.SaveChangesAsync();

            return(result.Entity.Id);
        }