podman_client/artifacts/
extract.rs

1use 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::artifacts::extract::ArtifactExtractOptions,
10    },
11};
12
13impl Client {
14    pub async fn artifact_extract(&self, options: ArtifactExtractOptions<'_>) -> Result<(), Error> {
15        let mut path = ["/libpod/artifacts/", options.name, "/extract"].concat();
16
17        let mut query = form_urlencoded::Serializer::new(String::new());
18        if let Some(digest) = options.digest {
19            query.append_pair("digest", digest);
20        }
21        if let Some(title) = options.title {
22            query.append_pair("title", title);
23        }
24        let query_string = query.finish();
25        if !query_string.is_empty() {
26            path += &["?", &query_string].concat();
27        }
28
29        let (_, data) = self
30            .send_request::<_, (), _>(SendRequestOptions {
31                method: "GET",
32                path: &path,
33                header: None,
34                body: Empty::<Bytes>::new(),
35            })
36            .await?;
37
38        Ok(data)
39    }
40}