podman_client/artifacts/
push.rs1use std::collections::HashMap;
2
3use http_body_util::Empty;
4use hyper::body::Bytes;
5use url::form_urlencoded;
6
7use crate::{
8 client::Client,
9 models::{
10 connection::SendRequestOptions,
11 lib::Error,
12 podman::artifacts::push::{ArtifactPush, ArtifactPushOptions},
13 },
14 utils::bool_to_str::bool_to_str,
15};
16
17impl Client {
18 pub async fn artifact_push(
19 &self,
20 options: ArtifactPushOptions<'_>,
21 ) -> Result<ArtifactPush, Error> {
22 let mut path = ["/libpod/artifacts/", options.name, "/push"].concat();
23
24 let mut query = form_urlencoded::Serializer::new(String::new());
25 if let Some(retry) = options.retry {
26 query.append_pair("retry", itoa::Buffer::new().format(retry));
27 }
28 if let Some(retry_delay) = options.retry_delay {
29 query.append_pair("retryDelay", retry_delay);
30 }
31 if let Some(tls_verify) = options.tls_verify {
32 query.append_pair("tlsVerify", bool_to_str(tls_verify));
33 }
34 let query_string = query.finish();
35 if !query_string.is_empty() {
36 path += &["?", &query_string].concat();
37 }
38
39 let mut header = None;
40 if let Some(x_registry_auth) = options.x_registry_auth {
41 header = Some(HashMap::from([("X-Registry-Auth", x_registry_auth)]));
42 }
43
44 let (_, data) = self
45 .send_request::<_, (), _>(SendRequestOptions {
46 method: "POST",
47 path: &path,
48 header,
49 body: Empty::<Bytes>::new(),
50 })
51 .await?;
52
53 Ok(data)
54 }
55}