diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/conversion/enqueue_bvh_to_workflow_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/conversion/enqueue_bvh_to_workflow_handler.rs index dbc45c301a..9104cd8c44 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/conversion/enqueue_bvh_to_workflow_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/conversion/enqueue_bvh_to_workflow_handler.rs @@ -6,6 +6,7 @@ use std::sync::Arc; use actix_web::{HttpRequest, HttpResponse, web}; use actix_web::error::ResponseError; use actix_web::http::StatusCode; +use actix_web::web::Json; use log::warn; use serde::Deserialize; use serde::Serialize; @@ -114,6 +115,9 @@ pub async fn enqueue_bvh_to_workflow_handler( request: web::Json, server_state: web::Data> ) -> Result { + + validate_request(&request)?; + let mut maybe_user_token: Option = None; let mut mysql_connection = server_state.mysql_pool.acquire().await.map_err(|err| { @@ -232,3 +236,15 @@ pub async fn enqueue_bvh_to_workflow_handler( Ok(HttpResponse::Ok().content_type("application/json").body(body)) } + +fn validate_request(request: &Json) -> Result<(), EnqueueBvhToWorkflowRequestError> { + if request.media_file_token.0.trim().is_empty() { + return Err(EnqueueBvhToWorkflowRequestError::BadInput("token is empty".to_string())); + } + + if request.uuid_idempotency_token.trim().is_empty() { + return Err(EnqueueBvhToWorkflowRequestError::BadInput("idempotency token is empty".to_string())); + } + + Ok(()) +}