This commit is contained in:
Andrea Spacca 2024-03-11 23:55:50 +09:00
parent 84c790a154
commit a83a14fc0c
4 changed files with 20 additions and 6 deletions

1
Cargo.lock generated
View file

@ -1423,6 +1423,7 @@ dependencies = [
"bytes",
"futures-util",
"image",
"lazy_static",
"libwebp-sys",
"mimalloc",
"once_cell",

View file

@ -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

View file

@ -511,4 +511,4 @@ async fn index(req: HttpRequest) -> Result<HttpResponse, Box<dyn Error>> {
// Stream response
Ok(response.streaming(resp.bytes_stream()))
}
}

View file

@ -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<String> = 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<String> = Some(String::from(""));
}
#[cfg(feature = "prefix-path")]
lazy_static! {
static ref PREFIX_PATH: Option<String> = 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, String>) -> 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, String>) -> String {
if qhash.is_some() {
let mut query = QString::new(query.into_iter().collect::<Vec<_>>());
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::<Vec<_>>());
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 {