From e0535e56add8da5aa2b6e716c2004e972ca35a4d Mon Sep 17 00:00:00 2001 From: Mira Limbeck Date: Tue, 22 Mar 2022 10:41:54 +0100 Subject: [PATCH] add http proxy support ureq has support for a HTTP proxy, but no support for HTTPS proxy yet. ureq doesn't query `all_proxy` and `ALL_PROXY` environment variables by itself, the way curl does. So set the proxy in code if any of the above environment variables are set. Signed-off-by: Mira Limbeck --- src/http_client.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/http_client.rs b/src/http_client.rs index 5cceafba..9f9e9868 100644 --- a/src/http_client.rs +++ b/src/http_client.rs @@ -40,9 +40,15 @@ pub enum Error { } fn ureq_agent() -> Result { - Ok(ureq::AgentBuilder::new() - .tls_connector(Arc::new(native_tls::TlsConnector::new()?)) - .build()) + let mut agent = + ureq::AgentBuilder::new().tls_connector(Arc::new(native_tls::TlsConnector::new()?)); + if let Ok(val) = std::env::var("all_proxy").or_else(|_| std::env::var("ALL_PROXY")) { + let proxy = ureq::Proxy::new(val).map_err(Box::new)?; + agent = agent.proxy(proxy); + } + + + Ok(agent.build()) } ///