IMPROVE input validation

This commit is contained in:
2025-05-15 10:29:00 +02:00
committed by dylandefaoite
parent e2c4b81cad
commit bce8a5e1d6
5 changed files with 45 additions and 33 deletions

View File

@@ -18,7 +18,7 @@ public class Job {
private ClipConfig clipConfig;
// job status
private JobStatus status = JobStatus.PENDING;
private JobStatus status = JobStatus.NOT_READY;
private Float progress = 0.0f;
public Job(String uuid, File inputFile, File outputFile) {

View File

@@ -22,7 +22,7 @@ public class DownloadService {
}
public Resource downloadInput(String uuid) {
Job job = jobService.get(uuid);
Job job = jobService.getJob(uuid);
if (job == null) {
throw new JobNotFound("Job doesn't exist");
@@ -33,7 +33,7 @@ public class DownloadService {
}
public Resource downloadOutput(String uuid) {
Job job = jobService.get(uuid);
Job job = jobService.getJob(uuid);
if (job == null) {
throw new JobNotFound("Job doesn't exist");

View File

@@ -3,7 +3,6 @@ package com.ddf.vodsystem.services;
import com.ddf.vodsystem.entities.ClipConfig;
import com.ddf.vodsystem.entities.Job;
import com.ddf.vodsystem.entities.JobStatus;
import com.ddf.vodsystem.exceptions.JobNotFound;
import org.springframework.stereotype.Service;
@Service
@@ -15,16 +14,8 @@ public class EditService {
}
public void edit(String uuid, ClipConfig clipConfig) {
Job job = jobService.get(uuid);
if (clipConfig.getStartPoint() != null && clipConfig.getStartPoint() < 0) {
throw new IllegalArgumentException("Start point cannot be negative");
}
if (clipConfig.getFileSize() != null && clipConfig.getFileSize() < 100) {
throw new IllegalArgumentException("File size cannot be less than 100kb");
}
Job job = jobService.getJob(uuid);
validateClipConfig(clipConfig);
job.setClipConfig(clipConfig);
}
@@ -33,11 +24,7 @@ public class EditService {
}
public float getProgress(String uuid) {
Job job = jobService.get(uuid);
if (job == null) {
throw new JobNotFound(uuid);
}
Job job = jobService.getJob(uuid);
if (job.getStatus() == JobStatus.FINISHED) {
return 1f;
@@ -45,4 +32,26 @@ public class EditService {
return job.getProgress();
}
private void validateClipConfig(ClipConfig clipConfig) {
Float start = clipConfig.getStartPoint();
Float end = clipConfig.getEndPoint();
Float fileSize = clipConfig.getFileSize();
if (start != null && start < 0) {
throw new IllegalArgumentException("Start point cannot be negative");
}
if (end != null && end < 0) {
throw new IllegalArgumentException("End point cannot be negative");
}
if (start != null && end != null && end <= start) {
throw new IllegalArgumentException("End point must be greater than start point");
}
if (fileSize != null && fileSize < 100) {
throw new IllegalArgumentException("File size cannot be less than 100kb");
}
}
}

View File

@@ -2,6 +2,7 @@ package com.ddf.vodsystem.services;
import com.ddf.vodsystem.entities.Job;
import com.ddf.vodsystem.entities.JobStatus;
import com.ddf.vodsystem.exceptions.JobNotFound;
import jakarta.annotation.PostConstruct;
import org.springframework.stereotype.Service;
@@ -28,17 +29,19 @@ public class JobService {
jobs.put(job.getUuid(), job);
}
public Job get(String uuid) {
return jobs.get(uuid);
}
public void jobReady(String uuid) {
public Job getJob(String uuid) {
Job job = jobs.get(uuid);
if (job == null) {
throw new RuntimeException("Job not found");
throw new JobNotFound("Job not found");
}
return job;
}
public void jobReady(String uuid) {
Job job = getJob(uuid);
logger.info("Job ready: {}", job.getUuid());
job.setStatus(JobStatus.PENDING);
jobQueue.add(job);

View File

@@ -25,9 +25,9 @@ public class UploadService {
private static final Logger logger = LoggerFactory.getLogger(UploadService.class);
@Value("${temp.vod.storage}")
private String INPUT_DIR;
private String inputDir;
@Value("${temp.vod.output}")
private String OUTPUT_DIR;
private String outputDir;
private final JobService jobService;
@@ -42,10 +42,10 @@ public class UploadService {
String extension = getFileExtension(file.getOriginalFilename());
String filename = uuid + (extension.isEmpty() ? "" : "." + extension);
Path inputPath = Paths.get(INPUT_DIR, filename);
Path inputPath = Paths.get(inputDir, filename);
File inputFile = inputPath.toFile();
Path outputPath = Paths.get(OUTPUT_DIR, filename);
Path outputPath = Paths.get(outputDir, filename);
File outputFile = outputPath.toFile();
moveToFile(file, inputFile);
@@ -87,17 +87,17 @@ public class UploadService {
private void createDirectories() throws IOException {
// Create INPUT_DIR if it doesn't exist
Path inputDirPath = Paths.get(INPUT_DIR);
Path inputDirPath = Paths.get(inputDir);
if (Files.notExists(inputDirPath)) {
Files.createDirectories(inputDirPath);
System.out.println("Created directory: " + INPUT_DIR);
logger.info("Created directory: {}", inputDir);
}
// Create OUTPUT_DIR if it doesn't exist
Path outputDirPath = Paths.get(OUTPUT_DIR);
Path outputDirPath = Paths.get(outputDir);
if (Files.notExists(outputDirPath)) {
Files.createDirectories(outputDirPath);
System.out.println("Created directory: " + OUTPUT_DIR);
logger.info("Created directory: {}", outputDir);
}
}