podman_client/containers/
list_processes.rs1use http_body_util::Empty;
2use hyper::body::Bytes;
3use url::form_urlencoded;
4
5use crate::{
6 client::Client,
7 models::{
8 connection::SendRequestOptions,
9 lib::Error,
10 podman::containers::list_processes::{
11 ContainerListProcesses, ContainerListProcessesOptions,
12 },
13 },
14 utils::bool_to_str::bool_to_str,
15};
16
17impl Client {
18 pub async fn container_list_processes(
19 &self,
20 options: ContainerListProcessesOptions<'_>,
21 ) -> Result<ContainerListProcesses, Error> {
22 let mut path = ["/libpod/containers/", options.name, "/top"].concat();
23
24 let mut query = form_urlencoded::Serializer::new(String::new());
25 if let Some(delay) = options.delay {
26 query.append_pair("delay", itoa::Buffer::new().format(delay));
27 }
28 if let Some(ps_args) = options.ps_args {
29 for ps_arg in ps_args {
30 query.append_pair("ps_args", ps_arg);
31 }
32 }
33 if let Some(stream) = options.stream {
34 query.append_pair("stream", bool_to_str(stream));
35 }
36 let query_string = query.finish();
37 if !query_string.is_empty() {
38 path += &["?", &query_string].concat();
39 }
40
41 let (_, data) = self
42 .send_request::<_, (), _>(SendRequestOptions {
43 method: "GET",
44 path: &path,
45 header: None,
46 body: Empty::<Bytes>::new(),
47 })
48 .await?;
49
50 Ok(data)
51 }
52}