From e5eb27f565ac331f0f9c46e23c3c02ada7985f23 Mon Sep 17 00:00:00 2001 From: fnuttens Date: Wed, 30 Aug 2023 16:12:58 +0200 Subject: [PATCH] Add support for HTTP proxy in network commands Closes https://github.com/nushell/nushell/issues/8847 --- crates/nu-command/src/network/http/client.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/crates/nu-command/src/network/http/client.rs b/crates/nu-command/src/network/http/client.rs index 6450a870fec61..23621101b572d 100644 --- a/crates/nu-command/src/network/http/client.rs +++ b/crates/nu-command/src/network/http/client.rs @@ -34,10 +34,17 @@ pub fn http_client(allow_insecure: bool) -> ureq::Agent { .build() .expect("Failed to build network tls"); - ureq::builder() + let mut agent_builder = ureq::builder() .user_agent("nushell") - .tls_connector(std::sync::Arc::new(tls)) - .build() + .tls_connector(std::sync::Arc::new(tls)); + + if let Some(http_proxy) = retrieve_http_proxy_from_env() { + if let Ok(proxy) = ureq::Proxy::new(http_proxy) { + agent_builder = agent_builder.proxy(proxy); + } + }; + + agent_builder.build() } pub fn http_parse_url( @@ -639,3 +646,9 @@ pub fn request_handle_response_headers( }, } } + +fn retrieve_http_proxy_from_env() -> Option { + std::env::vars() + .find(|(key, _)| key == "HTTP_PROXY") + .map(|(_, value)| value) +}