diff --git a/crates/trigger-http/src/wagi.rs b/crates/trigger-http/src/wagi.rs index f0628a3fc2..49e2466d80 100644 --- a/crates/trigger-http/src/wagi.rs +++ b/crates/trigger-http/src/wagi.rs @@ -38,13 +38,19 @@ impl HttpExecutor for WagiHttpExecutor { // Build the argv array by starting with the config for `argv` and substituting in // script name and args where appropriate. let script_name = uri_path.to_string(); - let args = req.uri().query().unwrap_or_default().replace('&', " "); - let argv = self - .wagi_config - .argv - .clone() - .replace("${SCRIPT_NAME}", &script_name) - .replace("${ARGS}", &args); + + let mut args: Vec = Vec::new(); + args.push(script_name); + + let parsed_url = url::Url::parse(req.uri().to_string().as_str())?; + + for (key, value) in parsed_url.query_pairs() { + args.push(key.to_string()); + + if !value.is_empty() { + args.push(value.to_string()); + } + } let (parts, body) = req.into_parts(); @@ -80,7 +86,7 @@ impl HttpExecutor for WagiHttpExecutor { .context("The wagi HTTP trigger was configured without the required wasi support")?; // Set up Wagi environment - wasi_builder.args(argv.split(' ')); + wasi_builder.args(args); wasi_builder.env(headers); wasi_builder.stdin_pipe(Cursor::new(body)); wasi_builder.stdout(stdout.clone());