forward stdout and stderr into the response body
This commit is contained in:
parent
92e5168e3e
commit
046594bec7
2 changed files with 19 additions and 3 deletions
|
@ -57,7 +57,7 @@ impl Handler {
|
|||
String::from_utf8(buf).unwrap()
|
||||
};
|
||||
|
||||
match &self.action {
|
||||
let output = match &self.action {
|
||||
Action::Command(ref cmd) => {
|
||||
// TODO: allow some kind of simple variable replacement
|
||||
let output = Command::new("/bin/bash")
|
||||
|
@ -75,6 +75,7 @@ impl Handler {
|
|||
String::from_utf8(output.stderr).unwrap_or_else(|_| String::new())
|
||||
)));
|
||||
}
|
||||
output
|
||||
}
|
||||
Action::Exec(ref path) => {
|
||||
let mut child = Command::new(&path)
|
||||
|
@ -104,8 +105,14 @@ impl Handler {
|
|||
String::from_utf8(output.stderr).unwrap_or_else(|_| String::new())
|
||||
)));
|
||||
}
|
||||
output
|
||||
}
|
||||
};
|
||||
Ok(json!({}))
|
||||
let stdout = String::from_utf8(output.stdout).unwrap_or_else(|_| String::new());
|
||||
let stderr = String::from_utf8(output.stderr).unwrap_or_else(|_| String::new());
|
||||
Ok(json!({
|
||||
"stdout": stdout,
|
||||
"stderr": stderr,
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,16 @@ pub fn dip_service(req: Request<Body>) -> Box<Future<Item = Response<Body>, Erro
|
|||
.fold(Ok(req_obj), |prev, handler| {
|
||||
prev.and_then(|val| handler.run(val))
|
||||
})
|
||||
.map(|_| (StatusCode::ACCEPTED, "success".to_owned()))
|
||||
.map(|res| {
|
||||
(
|
||||
StatusCode::ACCEPTED,
|
||||
format!(
|
||||
"stdout:\n{}\n\nstderr:\n{}",
|
||||
res.get("stdout").and_then(|v| v.as_str()).unwrap_or(""),
|
||||
res.get("stderr").and_then(|v| v.as_str()).unwrap_or(""),
|
||||
),
|
||||
)
|
||||
})
|
||||
.unwrap_or_else(|err| (StatusCode::BAD_REQUEST, format!("Error: {}", err)));
|
||||
Response::builder()
|
||||
.status(code)
|
||||
|
|
Loading…
Reference in a new issue