|
@@ -9,6 +9,8 @@ use std::{
|
|
|
};
|
|
|
|
|
|
use sha2::Digest;
|
|
|
+use ureq::AgentBuilder;
|
|
|
+use url::Url;
|
|
|
use zip::ZipArchive;
|
|
|
|
|
|
pub const WEBVIEW2_BOOTSTRAPPER_URL: &str = "https://go.microsoft.com/fwlink/p/?LinkId=2124703";
|
|
@@ -67,11 +69,26 @@ pub fn download_webview2_offline_installer(base_path: &Path, arch: &str) -> crat
|
|
|
Ok(file_path)
|
|
|
}
|
|
|
|
|
|
+fn create_agent_and_url(url: &str) -> crate::Result<(ureq::Agent, String)> {
|
|
|
+ match std::env::var("TAURI_BUNDLER_TOOLS_GITHUB_MIRROR") {
|
|
|
+ Ok(cdn) if url.starts_with("https://github.com/") => {
|
|
|
+ let mut parsed_cdn = Url::parse(&cdn)?;
|
|
|
+ parsed_cdn.set_path(url);
|
|
|
+ Ok((AgentBuilder::new().build(), parsed_cdn.into()))
|
|
|
+ }
|
|
|
+ _ => Ok((
|
|
|
+ AgentBuilder::new().try_proxy_from_env(true).build(),
|
|
|
+ url.to_owned(),
|
|
|
+ )),
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
pub fn download(url: &str) -> crate::Result<Vec<u8>> {
|
|
|
log::info!(action = "Downloading"; "{}", url);
|
|
|
|
|
|
- let agent = ureq::AgentBuilder::new().try_proxy_from_env(true).build();
|
|
|
- let response = agent.get(url).call().map_err(Box::new)?;
|
|
|
+ let (agent, final_url) = create_agent_and_url(url)?;
|
|
|
+
|
|
|
+ let response = agent.get(&final_url).call().map_err(Box::new)?;
|
|
|
let mut bytes = Vec::new();
|
|
|
response.into_reader().read_to_end(&mut bytes)?;
|
|
|
Ok(bytes)
|