podman_client/artifacts/
pull.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::pull::{ArtifactPull, ArtifactPullOptions},
13 },
14 utils::bool_to_str::bool_to_str,
15};
16
17impl Client {
18 pub async fn artifact_pull(
19 &self,
20 options: ArtifactPullOptions<'_>,
21 ) -> Result<ArtifactPull, Error> {
22 let mut path = "/libpod/artifacts/pull".to_owned();
23
24 let mut query = form_urlencoded::Serializer::new(String::new());
25 query.append_pair("name", options.name);
26 if let Some(retry) = options.retry {
27 query.append_pair("retry", itoa::Buffer::new().format(retry));
28 }
29 if let Some(retry_delay) = options.retry_delay {
30 query.append_pair("retryDelay", retry_delay);
31 }
32 if let Some(tls_verify) = options.tls_verify {
33 query.append_pair("tlsVerify", bool_to_str(tls_verify));
34 }
35 let query_string = query.finish();
36 if !query_string.is_empty() {
37 path += &["?", &query_string].concat();
38 }
39
40 let mut header = None;
41 if let Some(x_registry_auth) = options.x_registry_auth {
42 header = Some(HashMap::from([("X-Registry-Auth", x_registry_auth)]));
43 }
44
45 let (_, data) = self
46 .send_request::<_, (), _>(SendRequestOptions {
47 method: "POST",
48 path: &path,
49 header,
50 body: Empty::<Bytes>::new(),
51 })
52 .await?;
53
54 Ok(data)
55 }
56}