podman_client/containers/
wait.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::wait::{ContainerWait, ContainerWaitOptions},
11    },
12};
13
14impl Client {
15    pub async fn container_wait(
16        &self,
17        options: ContainerWaitOptions<'_>,
18    ) -> Result<ContainerWait, Error> {
19        let mut path = ["/libpod/containers/", options.name, "/wait"].concat();
20
21        let mut query = form_urlencoded::Serializer::new(String::new());
22        if let Some(condition) = options.condition {
23            query.append_pair("condition", condition.as_str());
24        }
25        if let Some(interval) = options.interval {
26            query.append_pair("interval", interval);
27        }
28        let query_string = query.finish();
29        if !query_string.is_empty() {
30            path += &["?", &query_string].concat();
31        }
32
33        let (_, data) = self
34            .send_request::<_, (), _>(SendRequestOptions {
35                method: "POST",
36                path: &path,
37                header: None,
38                body: Empty::<Bytes>::new(),
39            })
40            .await?;
41
42        Ok(data)
43    }
44}