diff options
| author | sigoden <sigoden@gmail.com> | 2024-11-27 10:16:21 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-27 10:16:21 +0800 |
| commit | 59df81b41cc91d93da465e32a9500ee614b18c11 (patch) | |
| tree | d01ff137b6aa7cb7057c4cf3039d2180ef95e3eb /src/utils | |
| parent | 2003159d322a96165ab949051c004c456de5be11 (diff) | |
| download | aichat-59df81b41cc91d93da465e32a9500ee614b18c11.tar.gz | |
feat: support all proxy env vars including NO_PROXY (#1015)
Diffstat (limited to 'src/utils')
| -rw-r--r-- | src/utils/mod.rs | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 27dac4a..873c5c8 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -208,24 +208,17 @@ pub fn is_url(path: &str) -> bool { } pub fn set_proxy( - builder: reqwest::ClientBuilder, + mut builder: reqwest::ClientBuilder, proxy: Option<&String>, ) -> Result<reqwest::ClientBuilder> { - let proxy = if let Some(proxy) = proxy { - if proxy.is_empty() || proxy == "-" { - return Ok(builder); + if let Some(proxy) = proxy { + builder = builder.no_proxy(); + if !proxy.is_empty() && proxy != "-" { + builder = builder.proxy( + reqwest::Proxy::all(proxy).with_context(|| format!("Invalid proxy `{proxy}`"))?, + ); } - proxy.clone() - } else if let Some(proxy) = ["HTTPS_PROXY", "https_proxy", "ALL_PROXY", "all_proxy"] - .into_iter() - .find_map(|v| env::var(v).ok()) - { - proxy - } else { - return Ok(builder); }; - let builder = builder - .proxy(reqwest::Proxy::all(&proxy).with_context(|| format!("Invalid proxy `{proxy}`"))?); Ok(builder) } |
