podman_client/manifests/
create.rs

1use http_body_util::Full;
2use hyper::body::Bytes;
3use url::form_urlencoded;
4
5use crate::{
6    client::Client,
7    models::{
8        connection::SendRequestOptions,
9        lib::Error,
10        podman::manifests::create::{ManifestCreate, ManifestCreateOptions},
11    },
12    utils::bool_to_str::bool_to_str,
13};
14
15impl Client {
16    pub async fn manifest_create(
17        &self,
18        options: ManifestCreateOptions<'_>,
19    ) -> Result<ManifestCreate, Error> {
20        let mut query = form_urlencoded::Serializer::new(String::new());
21        for image in options.images {
22            query.append_pair("images", image);
23        }
24        if let Some(all) = options.all {
25            query.append_pair("all", bool_to_str(all));
26        }
27        if let Some(amend) = options.amend {
28            query.append_pair("amend", bool_to_str(amend));
29        }
30        let query_string = query.finish();
31
32        let path = ["/libpod/manifests/", options.name, "?", &query_string].concat();
33
34        let (_, data) = self
35            .send_request::<_, (), _>(SendRequestOptions {
36                method: "GET",
37                path: &path,
38                header: None,
39                body: Full::new(Bytes::from(serde_json::to_string(&options.request)?)),
40            })
41            .await?;
42
43        Ok(data)
44    }
45}