Skip to main content

conduit_cli/core/engine/workflow/loader/
download.rs

1use crate::core::domain::source::Hash;
2use crate::core::engine::resolver::loader::ResolvedLoader;
3use crate::core::engine::workflow::Workflow;
4use crate::core::schemas::lock::HashKind;
5use crate::errors::ConduitResult;
6
7impl Workflow {
8    pub async fn download_loader(
9        &self,
10        resolved: &ResolvedLoader,
11    ) -> ConduitResult<(String, HashKind)> {
12        let mut hash_obj = Hash {
13            sha1: None,
14            sha256: None,
15            sha512: None,
16        };
17
18        if !resolved.hash.is_empty() {
19            if resolved.hash.len() == 64 {
20                hash_obj.sha256 = Some(resolved.hash.clone());
21            } else {
22                hash_obj.sha1 = Some(resolved.hash.clone());
23            }
24        }
25
26        let download_hash = if resolved.hash.is_empty() {
27            None
28        } else {
29            Some(&hash_obj)
30        };
31
32        self.ctx
33            .downloader
34            .download_to_store(&resolved.url, download_hash)
35            .await
36    }
37}