private async Task ResolveFileReference(DownloadReferenceDto downloadReferenceDto) { var response = await _fileClientService.DownloadFileFromRemote(downloadReferenceDto); await _ticketClientService.FinalizeTicket(downloadReferenceDto.TicketId); await _fileClientService.ValidateFileChecksum(int.Parse(response.Content)); }
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); }
public async Task <ActionResult <int> > DownloadFileFromRemote(DownloadReferenceDto downloadReferenceDto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var fileReferenceId = await _fileManagerService.DownloadFileFromSource(downloadReferenceDto); return(Ok(fileReferenceId)); }
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); }
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")); }
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); }