diff --git a/lifemonitor/tasks/controller.py b/lifemonitor/tasks/controller.py index cd5997bd..2397cbba 100644 --- a/lifemonitor/tasks/controller.py +++ b/lifemonitor/tasks/controller.py @@ -40,6 +40,8 @@ @authorized @blueprint.route("/status/", methods=("GET",)) def get_job_status(job_id: str): + if not utils.validate_job_id(job_id): + raise ValueError(f"Invalid job id: {job_id}") serialized_job_data = cache.get(utils.get_job_key(job_id=job_id)) if not serialized_job_data: return f"job ${job_id} not found", 404 diff --git a/lifemonitor/tasks/utils.py b/lifemonitor/tasks/utils.py index 2ddde561..96cda3a4 100644 --- a/lifemonitor/tasks/utils.py +++ b/lifemonitor/tasks/utils.py @@ -15,6 +15,16 @@ def make_job_id() -> str: return str(uuid4()) +def validate_job_id(job_id: str) -> bool: + '''Validate the job id defined as uuid4''' + from uuid import UUID + try: + UUID(job_id, version=4) + return True + except ValueError: + return False + + def get_job_key(job_id: str): return f"job-{job_id}"