podman_client/containers/
delete_stopped.rs

1use std::collections::HashMap;
2
3use http_body_util::Empty;
4use hyper::body::Bytes;
5use url::form_urlencoded::byte_serialize;
6
7use crate::{
8    client::Client,
9    models::{
10        connection::SendRequestOptions,
11        lib::Error,
12        podman::containers::delete_stopped::{
13            ContainerDeleteStopped, ContainerDeleteStoppedOptions,
14        },
15    },
16};
17
18impl Client {
19    pub async fn container_delete_stopped(
20        &self,
21        options: Option<ContainerDeleteStoppedOptions<'_>>,
22    ) -> Result<ContainerDeleteStopped, Error> {
23        let mut path = "/libpod/containers/prune".to_owned();
24
25        if let Some(options) = options {
26            if let Some(opt_filters) = options.filters {
27                let mut filters = HashMap::new();
28                if let Some(until) = opt_filters.until {
29                    filters.insert("until", until);
30                }
31                if let Some(label) = opt_filters.label {
32                    filters.insert("label", label);
33                }
34                if let Some(labelnot) = opt_filters.labelnot {
35                    filters.insert("label!", labelnot);
36                }
37                if !filters.is_empty() {
38                    let filters_json = serde_json::to_string(&filters)?;
39                    let filters_encoded: String = byte_serialize(filters_json.as_bytes()).collect();
40                    path += &["?filters=", &filters_encoded].concat();
41                }
42            }
43        }
44
45        let (_, data) = self
46            .send_request::<_, (), _>(SendRequestOptions {
47                method: "POST",
48                path: &path,
49                header: None,
50                body: Empty::<Bytes>::new(),
51            })
52            .await?;
53
54        Ok(data)
55    }
56}