podman_client/containers/
list_processes.rs

1use 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}