mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-08-21 23:41:15 +00:00
api-client: Allow response to be captured
Previously, the API response was always written to stdout, but that may not be appropriate for all clients. The client can now control this behaviour as the client API returns the response in the `Result`. Fixes: #4703. Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
This commit is contained in:
parent
eea9bcea38
commit
cd0208fe0a
@ -143,13 +143,13 @@ fn parse_http_response(socket: &mut dyn Read) -> Result<Option<String>, Error> {
|
|||||||
|
|
||||||
/// Make an API request using the fully qualified command name.
|
/// Make an API request using the fully qualified command name.
|
||||||
/// For example, full_command could be "vm.create" or "vmm.ping".
|
/// For example, full_command could be "vm.create" or "vmm.ping".
|
||||||
pub fn simple_api_full_command_with_fds<T: Read + Write + ScmSocket>(
|
pub fn simple_api_full_command_with_fds_and_response<T: Read + Write + ScmSocket>(
|
||||||
socket: &mut T,
|
socket: &mut T,
|
||||||
method: &str,
|
method: &str,
|
||||||
full_command: &str,
|
full_command: &str,
|
||||||
request_body: Option<&str>,
|
request_body: Option<&str>,
|
||||||
request_fds: Vec<RawFd>,
|
request_fds: Vec<RawFd>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<Option<String>, Error> {
|
||||||
socket
|
socket
|
||||||
.send_with_fds(
|
.send_with_fds(
|
||||||
&[format!(
|
&[format!(
|
||||||
@ -177,9 +177,28 @@ pub fn simple_api_full_command_with_fds<T: Read + Write + ScmSocket>(
|
|||||||
|
|
||||||
socket.flush().map_err(Error::Socket)?;
|
socket.flush().map_err(Error::Socket)?;
|
||||||
|
|
||||||
if let Some(body) = parse_http_response(socket)? {
|
parse_http_response(socket)
|
||||||
println!("{}", body);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn simple_api_full_command_with_fds<T: Read + Write + ScmSocket>(
|
||||||
|
socket: &mut T,
|
||||||
|
method: &str,
|
||||||
|
full_command: &str,
|
||||||
|
request_body: Option<&str>,
|
||||||
|
request_fds: Vec<RawFd>,
|
||||||
|
) -> Result<(), Error> {
|
||||||
|
let response = simple_api_full_command_with_fds_and_response(
|
||||||
|
socket,
|
||||||
|
method,
|
||||||
|
full_command,
|
||||||
|
request_body,
|
||||||
|
request_fds,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
if response.is_some() {
|
||||||
|
println!("{}", response.unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,6 +211,21 @@ pub fn simple_api_full_command<T: Read + Write + ScmSocket>(
|
|||||||
simple_api_full_command_with_fds(socket, method, full_command, request_body, Vec::new())
|
simple_api_full_command_with_fds(socket, method, full_command, request_body, Vec::new())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn simple_api_full_command_and_response<T: Read + Write + ScmSocket>(
|
||||||
|
socket: &mut T,
|
||||||
|
method: &str,
|
||||||
|
full_command: &str,
|
||||||
|
request_body: Option<&str>,
|
||||||
|
) -> Result<Option<String>, Error> {
|
||||||
|
simple_api_full_command_with_fds_and_response(
|
||||||
|
socket,
|
||||||
|
method,
|
||||||
|
full_command,
|
||||||
|
request_body,
|
||||||
|
Vec::new(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn simple_api_command_with_fds<T: Read + Write + ScmSocket>(
|
pub fn simple_api_command_with_fds<T: Read + Write + ScmSocket>(
|
||||||
socket: &mut T,
|
socket: &mut T,
|
||||||
method: &str,
|
method: &str,
|
||||||
|
Loading…
Reference in New Issue
Block a user