diff --git a/Cargo.lock b/Cargo.lock index 54c7cd8..320cbcf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1423,6 +1423,7 @@ dependencies = [ "bytes", "futures-util", "image", + "lazy_static", "libwebp-sys", "mimalloc", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index bf231f9..b66df02 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ regex = "1.10.3" blake3 = { version = "1.5.0", optional = true } bytes = "1.5.0" futures-util = "0.3.30" +lazy_static = "1.4.0" [features] default = ["webp", "mimalloc", "reqwest-rustls", "qhash"] @@ -42,5 +43,7 @@ optimized = ["libwebp-sys?/sse41", "libwebp-sys?/avx2", "libwebp-sys?/neon"] qhash = ["blake3"] +prefix-path = [] + [profile.release] lto = true diff --git a/src/main.rs b/src/main.rs index 531d96b..ae453e1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -511,4 +511,4 @@ async fn index(req: HttpRequest) -> Result> { // Stream response Ok(response.streaming(resp.bytes_stream())) -} \ No newline at end of file +} diff --git a/src/utils.rs b/src/utils.rs index 9f741ad..b659c41 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,11 +1,22 @@ -use once_cell::sync::Lazy; +use lazy_static::lazy_static; use qstring::QString; use reqwest::Url; use std::borrow::Cow; use std::collections::BTreeMap; use std::env; -static PREFIX_PATH: Lazy = Lazy::new(|| String::from(env::var("PREFIX_PATH").unwrap_or_else(|_| "".to_string()))); +#[cfg(not(feature = "prefix-path"))] +lazy_static! { + static ref PREFIX_PATH: Option = Some(String::from("")); +} + +#[cfg(feature = "prefix-path")] +lazy_static! { + static ref PREFIX_PATH: Option = match env::var("PREFIX_PATH") { + Ok(v) => Some(String::from(v)), + Err(e) => panic!("$PREFIX_PATH is not set ({})", e) + }; +} pub fn read_buf(buf: &[u8], pos: &mut usize) -> u8 { let byte = buf[*pos]; @@ -17,7 +28,6 @@ fn finalize_url(path: &str, query: BTreeMap) -> String { #[cfg(feature = "qhash")] { use std::collections::BTreeSet; - use std::env; let qhash = { let secret = env::var("HASH_SECRET"); @@ -50,12 +60,12 @@ fn finalize_url(path: &str, query: BTreeMap) -> String { if qhash.is_some() { let mut query = QString::new(query.into_iter().collect::>()); query.add_pair(("qhash", qhash.unwrap())); - return format!("{}{}?{}", PREFIX_PATH.as_str(), path, query); + return format!("{}{}?{}", PREFIX_PATH.as_ref().unwrap().to_string(), path, query); } } let query = QString::new(query.into_iter().collect::>()); - format!("{}{}?{}", PREFIX_PATH.as_str(), path, query) + format!("{}{}?{}", PREFIX_PATH.as_ref().unwrap().to_string(), path, query) } pub fn localize_url(url: &str, host: &str) -> String {