junobuild_storage/
certified_assets.rs

1use crate::certification::types::certified::CertifiedAssetHashes;
2use crate::rewrites::rewrite_source_to_path;
3use crate::routing::get_routing;
4use crate::runtime::init_certified_assets;
5use crate::strategies::{StorageCertificateStrategy, StorageStateStrategy};
6use crate::types::config::StorageConfig;
7use crate::types::http_request::{Routing, RoutingDefault};
8
9pub fn extend_and_init_certified_assets(
10    asset_hashes: &mut CertifiedAssetHashes,
11    config: &StorageConfig,
12    storage_state: &impl StorageStateStrategy,
13    certificate: &impl StorageCertificateStrategy,
14) {
15    for (source, destination) in config.rewrites.clone() {
16        if let Ok(Routing::Default(RoutingDefault { url: _, asset })) =
17            get_routing(destination, &Vec::new(), false, storage_state)
18        {
19            let src_path = rewrite_source_to_path(&source);
20
21            if let Some((asset, _)) = asset {
22                asset_hashes.insert_rewrite_v2(&src_path, &asset, config);
23            }
24        }
25    }
26
27    for (source, redirect) in config.unwrap_redirects() {
28        asset_hashes.insert_redirect_v2(
29            &source,
30            redirect.status_code,
31            &redirect.location,
32            &config.unwrap_iframe(),
33        );
34    }
35
36    init_certified_assets(asset_hashes, certificate);
37}