diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client.rs | 3 | ||||
| -rw-r--r-- | src/config/mod.rs | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/client.rs b/src/client.rs index 7fc2824..916a1ef 100644 --- a/src/client.rs +++ b/src/client.rs @@ -126,7 +126,8 @@ impl ChatGptClient { fn build_client(&self) -> Result<Client> { let mut builder = Client::builder(); if let Some(proxy) = self.config.read().proxy.as_ref() { - builder = builder.proxy(Proxy::all(proxy).with_context(|| "Invalid config.proxy")?); + builder = builder + .proxy(Proxy::all(proxy).with_context(|| format!("Invalid proxy `{proxy}`"))?); } let client = builder .connect_timeout(CONNECT_TIMEOUT) diff --git a/src/config/mod.rs b/src/config/mod.rs index b0cd6c0..a37140c 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -106,6 +106,7 @@ impl Config { bail!("api_key not set"); } config.merge_env_vars(); + config.maybe_proxy(); config.load_roles()?; Ok(config) @@ -430,6 +431,15 @@ impl Config { } } } + + fn maybe_proxy(&mut self) { + if self.proxy.is_some() { + return; + } + if let Ok(value) = env::var("HTTPS_PROXY").or_else(|_| env::var("ALL_PROXY")) { + self.proxy = Some(value); + } + } } fn create_config_file(config_path: &Path) -> Result<()> { |
