summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/client.rs3
-rw-r--r--src/config/mod.rs10
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<()> {