diff --git a/docs/specs/validator-api.yml b/docs/specs/validator-api.yml index 8a8ddcf..e7fc0f9 100644 --- a/docs/specs/validator-api.yml +++ b/docs/specs/validator-api.yml @@ -6,7 +6,7 @@ info: contact: name: IGNF/validator url: "https://github.com/IGNF/validator/issues" - version: "0.5.8" + version: "0.6.0" title: "API Validator" license: name: "AGPL-3.0-or-later" diff --git a/src/Controller/Api/ValidationsController.php b/src/Controller/Api/ValidationsController.php index d2a6e5a..e478a8b 100755 --- a/src/Controller/Api/ValidationsController.php +++ b/src/Controller/Api/ValidationsController.php @@ -31,8 +31,7 @@ public function __construct( private ValidatorArgumentsService $valArgsService, private MimeTypeGuesserService $mimeTypeGuesserService, private LoggerInterface $logger, - ) { - } + ) {} /** * @Route( @@ -82,7 +81,7 @@ public function readConsole($uid) } $outputDirectory = $this->storage->getOutputDirectory($validation); - $filepath = $outputDirectory.'/validator-debug.log'; + $filepath = $outputDirectory . '/validator-debug.log'; $content = $this->storage->getStorage()->read($filepath); @@ -110,8 +109,8 @@ public function getValidationCsv($uid, CsvReportWriter $csvWriter) $csvWriter->write($validation); }); $response->headers->set('Content-Type', 'application/force-download'); - $filename = $uid.'-results.csv'; - $response->headers->set('Content-Disposition', 'attachment; filename="'.$filename.'"'); + $filename = $uid . '-results.csv'; + $response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"'); return $response; } @@ -160,7 +159,7 @@ public function uploadDataset(Request $request) if (!$this->storage->getStorage()->directoryExists($uploadDirectory)) { $this->storage->getStorage()->createDirectory($uploadDirectory); } - $fileLocation = $uploadDirectory.$validation->getDatasetName().'.zip'; + $fileLocation = $uploadDirectory . $validation->getDatasetName() . '.zip'; if ($this->storage->getStorage()->fileExists($fileLocation)) { $this->storage->getStorage()->delete($fileLocation); } @@ -215,10 +214,7 @@ public function updateArguments(Request $request, $uid) $arguments = $this->valArgsService->validate($data); // checks if we need to keep data - $deleteData = $arguments['deleteData']; - if ($deleteData) { - $validation->setDateCreation((new \DateTime())->modify('-5 days')); - } + $validation->setDeleteData($arguments['deleteData']); unset($arguments['deleteData']); $validation->reset(); @@ -298,9 +294,9 @@ public function downloadNormalizedData($uid) } $outputDirectory = $this->storage->getOutputDirectory($validation); - $zipFilepath = $outputDirectory.$validation->getDatasetName().'.zip'; + $zipFilepath = $outputDirectory . $validation->getDatasetName() . '.zip'; - return $this->getDownloadResponse($zipFilepath, $validation->getDatasetName().'-normalized.zip'); + return $this->getDownloadResponse($zipFilepath, $validation->getDatasetName() . '-normalized.zip'); } /** @@ -322,9 +318,9 @@ public function downloadSourceData($uid) } $uploadDirectory = $this->storage->getUploadDirectory($validation); - $zipFilepath = $uploadDirectory.$validation->getDatasetName().'.zip'; + $zipFilepath = $uploadDirectory . $validation->getDatasetName() . '.zip'; - return $this->getDownloadResponse($zipFilepath, $validation->getDatasetName().'-source.zip'); + return $this->getDownloadResponse($zipFilepath, $validation->getDatasetName() . '-source.zip'); } /** diff --git a/src/Entity/Validation.php b/src/Entity/Validation.php index 60abb1c..d80be15 100755 --- a/src/Entity/Validation.php +++ b/src/Entity/Validation.php @@ -114,6 +114,11 @@ class Validation */ private $results; + /** + * @ORM\Column(type="boolean", nullable=true) + */ + private $deleteData; + /** * Constructor. */ @@ -232,6 +237,18 @@ public function setResults($results) return $this; } + public function getDeleteData() + { + return $this->deleteData; + } + + public function setDeleteData($deleteData) + { + $this->deleteData = $deleteData; + + return $this; + } + /** * Reset all attributes because user has requested a validation with updated parameters. * diff --git a/src/Validation/ValidationManager.php b/src/Validation/ValidationManager.php index dceaf52..aefe3e1 100644 --- a/src/Validation/ValidationManager.php +++ b/src/Validation/ValidationManager.php @@ -242,13 +242,13 @@ private function getZip(Validation $validation) ]); $validationDirectory = $this->storage->getDirectory($validation); - $uploadFile = $this->storage->getUploadDirectory($validation).$validation->getDatasetName().'.zip'; + $uploadFile = $this->storage->getUploadDirectory($validation) . $validation->getDatasetName() . '.zip'; if (!is_dir($validationDirectory)) { mkdir($validationDirectory); } - $zipPath = $validationDirectory.'/'.$validation->getDatasetName().'.zip'; + $zipPath = $validationDirectory . '/' . $validation->getDatasetName() . '.zip'; file_put_contents( $zipPath, @@ -272,7 +272,7 @@ private function validateZip($validation) 'datasetName' => $validation->getDatasetName(), ]); $validationDirectory = $this->storage->getDirectory($validation); - $zipPath = $validationDirectory.'/'.$validation->getDatasetName().'.zip'; + $zipPath = $validationDirectory . '/' . $validation->getDatasetName() . '.zip'; $errors = $this->zipArchiveValidator->validate($zipPath); if (count($errors) > 0) { throw new ZipArchiveValidationException($errors); @@ -291,11 +291,11 @@ private function unzip(Validation $validation) 'datasetName' => $validation->getDatasetName(), ]); $validationDirectory = $this->storage->getDirectory($validation); - $zipFilename = $validationDirectory.'/'.$validation->getDatasetName().'.zip'; + $zipFilename = $validationDirectory . '/' . $validation->getDatasetName() . '.zip'; $zip = new \ZipArchive(); if (true === $zip->open($zipFilename)) { - $zip->extractTo($validationDirectory.'/'.$validation->getDatasetName()); + $zip->extractTo($validationDirectory . '/' . $validation->getDatasetName()); $zip->close(); } else { throw new \Exception('Zip decompression failed'); @@ -316,11 +316,11 @@ private function zipNormData(Validation $validation) $fs = new Filesystem(); $validationDirectory = $this->storage->getDirectory($validation); - $normDataParentDir = $validationDirectory.'/validation/'; + $normDataParentDir = $validationDirectory . '/validation/'; $datasetName = $validation->getDatasetName(); // checking if normalized data is present - if (!$fs->exists($normDataParentDir.$datasetName)) { + if (!$fs->exists($normDataParentDir . $datasetName)) { return; } @@ -345,12 +345,12 @@ private function saveToStorage(Validation $validation) 'datasetName' => $validation->getDatasetName(), ]); $validationDirectory = $this->storage->getDirectory($validation); - $normDataPath = $validationDirectory.'/validation/'.$validation->getDatasetName().'.zip'; + $normDataPath = $validationDirectory . '/validation/' . $validation->getDatasetName() . '.zip'; $outputDirectory = $this->storage->getOutputDirectory($validation); if (!$this->storage->getStorage()->directoryExists($outputDirectory)) { $this->storage->getStorage()->createDirectory($outputDirectory); } - $outputPath = $outputDirectory.$validation->getDatasetName().'.zip'; + $outputPath = $outputDirectory . $validation->getDatasetName() . '.zip'; if ($this->storage->getStorage()->fileExists($outputPath)) { $this->storage->getStorage()->delete($outputPath); } @@ -363,8 +363,8 @@ private function saveToStorage(Validation $validation) 'uid' => $validation->getUid(), 'datasetName' => $validation->getDatasetName(), ]); - $logPath = $validationDirectory.'/validator-debug.log'; - $outputPath = $outputDirectory.'/validator-debug.log'; + $logPath = $validationDirectory . '/validator-debug.log'; + $outputPath = $outputDirectory . '/validator-debug.log'; $stream = fopen($logPath, 'r+'); $this->storage->getStorage()->writeStream($outputPath, $stream); @@ -392,6 +392,10 @@ private function cleanUp(Validation $validation) ]); $fs->remove($validationDirectory); } + + if ($validation->getDeleteData()) { + $this->archive($validation); + } } /**