podman_client/pods/
systemd_units_generate.rs1use 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}