podman_client/containers/
commit.rs1use http_body_util::Empty;
2use hyper::body::Bytes;
3use url::form_urlencoded;
4
5use crate::{
6 client::Client,
7 models::{
8 connection::SendRequestOptions, lib::Error,
9 podman::containers::commit::ContainerCommitOptions,
10 },
11 utils::bool_to_str::bool_to_str,
12};
13
14impl Client {
15 pub async fn container_commit(&self, options: ContainerCommitOptions<'_>) -> Result<(), Error> {
16 let mut path = "/libpod/commit".to_owned();
17
18 let mut query = form_urlencoded::Serializer::new(String::new());
19 query.append_pair("container", options.container);
20 if let Some(author) = options.author {
21 query.append_pair("author", author);
22 }
23 if let Some(changes) = options.changes {
24 for change in changes {
25 query.append_pair("changes", change);
26 }
27 }
28 if let Some(comment) = options.comment {
29 query.append_pair("comment", comment);
30 }
31 if let Some(format) = options.format {
32 query.append_pair("format", format);
33 }
34 if let Some(pause) = options.pause {
35 query.append_pair("pause", bool_to_str(pause));
36 }
37 if let Some(repo) = options.repo {
38 query.append_pair("repo", repo);
39 }
40 if let Some(squash) = options.squash {
41 query.append_pair("squash", bool_to_str(squash));
42 }
43 if let Some(stream) = options.stream {
44 query.append_pair("stream", bool_to_str(stream));
45 }
46 if let Some(tag) = options.tag {
47 query.append_pair("tag", tag);
48 }
49 let query_string = query.finish();
50 if !query_string.is_empty() {
51 path += &["?", &query_string].concat();
52 }
53
54 let (_, data) = self
55 .send_request::<_, (), _>(SendRequestOptions {
56 method: "POST",
57 path: &path,
58 header: None,
59 body: Empty::<Bytes>::new(),
60 })
61 .await?;
62
63 Ok(data)
64 }
65}