podman_client/pods/
systemd_units_generate.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::pods::systemd_units_generate::{
11            PodSystemdUnitsGenerate, PodSystemdUnitsGenerateOptions,
12        },
13    },
14    utils::bool_to_str::bool_to_str,
15};
16
17impl Client {
18    pub async fn pod_systemd_units_generate(
19        &self,
20        options: PodSystemdUnitsGenerateOptions<'_>,
21    ) -> Result<PodSystemdUnitsGenerate, Error> {
22        let mut path = ["/libpod/generate/", options.name, "/systemd"].concat();
23
24        let mut query = form_urlencoded::Serializer::new(String::new());
25        if let Some(additional_env_variables) = options.additional_env_variables {
26            for additional_env_variable in additional_env_variables {
27                query.append_pair("additionalEnvVariables", additional_env_variable);
28            }
29        }
30        if let Some(after) = options.after {
31            for a in after {
32                query.append_pair("after", a);
33            }
34        }
35        if let Some(container_prefix) = options.container_prefix {
36            query.append_pair("containerPrefix", container_prefix);
37        }
38        if let Some(new) = options.new {
39            query.append_pair("new", bool_to_str(new));
40        }
41        if let Some(no_header) = options.no_header {
42            query.append_pair("noHeader", bool_to_str(no_header));
43        }
44        if let Some(pod_prefix) = options.pod_prefix {
45            query.append_pair("podPrefix", pod_prefix);
46        }
47        if let Some(requires) = options.requires {
48            for require in requires {
49                query.append_pair("requires", require);
50            }
51        }
52        if let Some(restart_policy) = options.restart_policy {
53            query.append_pair("restartPolicy", restart_policy);
54        }
55        if let Some(restart_sec) = options.restart_sec {
56            query.append_pair("restartSec", itoa::Buffer::new().format(restart_sec));
57        }
58        if let Some(separator) = options.separator {
59            query.append_pair("separator", separator);
60        }
61        if let Some(start_timeout) = options.start_timeout {
62            query.append_pair("startTimeout", itoa::Buffer::new().format(start_timeout));
63        }
64        if let Some(stop_timeout) = options.stop_timeout {
65            query.append_pair("stopTimeout", itoa::Buffer::new().format(stop_timeout));
66        }
67        if let Some(use_name) = options.use_name {
68            query.append_pair("useName", bool_to_str(use_name));
69        }
70        if let Some(wants) = options.wants {
71            for want in wants {
72                query.append_pair("wants", want);
73            }
74        }
75        let query_string = query.finish();
76        if !query_string.is_empty() {
77            path += &["?", &query_string].concat();
78        }
79
80        let (_, data) = self
81            .send_request::<_, (), _>(SendRequestOptions {
82                method: "GET",
83                path: &path,
84                header: None,
85                body: Empty::<Bytes>::new(),
86            })
87            .await?;
88
89        Ok(data)
90    }
91}