diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index 3874df575c..ff9cd24f63 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -42,7 +42,7 @@ use crate::trigger_helpers::RunnableId; use crate::users::get_scope_tags; use crate::utils::content_plain; use crate::{ - args::{DecodeQueries, RawWebhookArgs}, + args::{self, RawWebhookArgs}, db::DB, users::{check_scopes, require_owner_of_path, OptAuthed}, utils::require_super_admin, @@ -4330,7 +4330,7 @@ pub async fn run_wait_result_job_by_path_get( Extension(db): Extension, Path((w_id, script_path)): Path<(String, StripPath)>, Query(run_query): Query, - DecodeQueries(queries): DecodeQueries, + args: RawWebhookArgs, ) -> error::Result { #[cfg(feature = "enterprise")] check_license_key_valid().await?; @@ -4342,17 +4342,23 @@ pub async fn run_wait_result_job_by_path_get( x.map_err(|e| Error::internal_err(format!("Impossible to decode query payload: {e:#?}"))) }); - let mut payload_args = if let Some(payload) = payload_r { + let payload_args = if let Some(payload) = payload_r { payload? } else { HashMap::new() }; - queries.iter().for_each(|(k, v)| { - payload_args.insert(k.to_string(), v.clone()); - }); - let inner_args: HashMap> = HashMap::new(); - let args = PushArgs { extra: Some(payload_args), args: &inner_args }; + let mut args = args.process_args(&authed, &db, &w_id, None).await?; + args.body = args::Body::HashMap(payload_args); + + let args = args + .to_args_from_runnable( + &db, + &w_id, + RunnableId::from_script_path(&script_path.0), + run_query.skip_preprocessor, + ) + .await?; check_queue_too_long(&db, QUEUE_LIMIT_WAIT_RESULT.or(run_query.queue_limit)).await?; let script_path = script_path.to_path(); @@ -4424,7 +4430,7 @@ pub async fn run_wait_result_flow_by_path_get( Extension(db): Extension, Path((w_id, flow_path)): Path<(String, StripPath)>, Query(run_query): Query, - DecodeQueries(queries): DecodeQueries, + args: RawWebhookArgs, ) -> error::Result { #[cfg(feature = "enterprise")] check_license_key_valid().await?; @@ -4438,17 +4444,23 @@ pub async fn run_wait_result_flow_by_path_get( }) }); - let mut payload_args = if let Some(payload) = payload_r { + let payload_args = if let Some(payload) = payload_r { payload? } else { HashMap::new() }; - queries.iter().for_each(|(k, v)| { - payload_args.insert(k.to_string(), v.clone()); - }); + let mut args = args.process_args(&authed, &db, &w_id, None).await?; + args.body = args::Body::HashMap(payload_args); - let args = PushArgsOwned { extra: Some(payload_args), args: HashMap::new() }; + let args = args + .to_args_from_runnable( + &db, + &w_id, + RunnableId::from_flow_path(&flow_path.0), + run_query.skip_preprocessor, + ) + .await?; run_wait_result_flow_by_path_internal(db, run_query, flow_path, authed, user_db, args, w_id) .await