podman_client/images/
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::images::pull::{ImagePull, ImagePullOptions},
13 },
14 utils::bool_to_str::bool_to_str,
15};
16
17impl Client {
18 pub async fn image_pull(
19 &self,
20 options: Option<ImagePullOptions<'_>>,
21 ) -> Result<ImagePull, Error> {
22 let mut path = "/libpod/images/pull".to_owned();
23 let mut header = None;
24
25 if let Some(options) = options {
26 let mut query = form_urlencoded::Serializer::new(String::new());
27 if let Some(all_tags) = options.all_tags {
28 query.append_pair("allTags", bool_to_str(all_tags));
29 }
30 if let Some(arch) = options.arch {
31 query.append_pair("Arch", arch);
32 }
33 if let Some(compat_mode) = options.compat_mode {
34 query.append_pair("compatMode", bool_to_str(compat_mode));
35 }
36 if let Some(os) = options.os {
37 query.append_pair("OS", os);
38 }
39 if let Some(policy) = options.policy {
40 query.append_pair("policy", policy);
41 }
42 if let Some(quite) = options.quite {
43 query.append_pair("quite", bool_to_str(quite));
44 }
45 if let Some(reference) = options.reference {
46 query.append_pair("reference", reference);
47 }
48 if let Some(tls_verify) = options.tls_verify {
49 query.append_pair("tlsVerify", bool_to_str(tls_verify));
50 }
51 if let Some(variant) = options.variant {
52 query.append_pair("variant", variant);
53 }
54 let query_string = query.finish();
55
56 if !query_string.is_empty() {
57 path += &["?", &query_string].concat();
58 }
59
60 if let Some(x_registry_auth) = options.x_registry_auth {
61 header = Some(HashMap::from([("X-Registry-Auth", x_registry_auth)]));
62 }
63 }
64
65 let (_, data) = self
66 .send_request::<_, (), _>(SendRequestOptions {
67 method: "POST",
68 path: &path,
69 header,
70 body: Empty::<Bytes>::new(),
71 })
72 .await?;
73
74 Ok(data)
75 }
76}