Skip to content

Commit d4ea7eb

Browse files
feat: add support for additional (common) CLI env vars (#2091)
* style: organize imports * feat: honor standard HTTP_PROXY env vars * feat: honor insecure-skip-verify env var
1 parent ce14dd4 commit d4ea7eb

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

api-client/src/lib.rs

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ use std::time::Duration;
33
use anyhow::{Context, Result};
44
use headers::{Authorization, HeaderMapExt};
55
use percent_encoding::utf8_percent_encode;
6-
use reqwest::header::HeaderMap;
7-
use reqwest::Response;
6+
use reqwest::{header::HeaderMap, Response};
87
use reqwest_middleware::{ClientWithMiddleware, RequestBuilder};
98
use serde::{Deserialize, Serialize};
109
use shuttle_common::models::{
@@ -22,16 +21,18 @@ use shuttle_common::models::{
2221
user::UserResponse,
2322
};
2423
use tokio::net::TcpStream;
25-
use tokio_tungstenite::tungstenite::client::IntoClientRequest;
26-
use tokio_tungstenite::{connect_async, MaybeTlsStream, WebSocketStream};
24+
use tokio_tungstenite::{
25+
connect_async, tungstenite::client::IntoClientRequest, MaybeTlsStream, WebSocketStream,
26+
};
2727

2828
#[cfg(feature = "tracing")]
2929
mod middleware;
3030
#[cfg(feature = "tracing")]
31-
use crate::middleware::LoggingMiddleware;
32-
#[cfg(feature = "tracing")]
3331
use tracing::{debug, error};
3432

33+
#[cfg(feature = "tracing")]
34+
use crate::middleware::LoggingMiddleware;
35+
3536
pub mod util;
3637
use util::{ParsedJson, ToBodyContent};
3738

@@ -50,17 +51,35 @@ impl ShuttleApiClient {
5051
timeout: Option<u64>,
5152
) -> Self {
5253
let mut builder = reqwest::Client::builder();
53-
if let Some(h) = headers {
54-
builder = builder.default_headers(h);
54+
55+
if let Ok(proxy) = std::env::var("HTTP_PROXY") {
56+
builder = builder.proxy(reqwest::Proxy::http(proxy).unwrap());
57+
}
58+
59+
if let Ok(proxy) = std::env::var("HTTPS_PROXY") {
60+
builder = builder.proxy(reqwest::Proxy::https(proxy).unwrap());
61+
}
62+
63+
if std::env::var("SHUTTLE_TLS_INSECURE_SKIP_VERIFY")
64+
.is_ok_and(|value| value == "1" || value == "true")
65+
{
66+
builder = builder.danger_accept_invalid_certs(true);
67+
}
68+
69+
if let Some(headers) = headers {
70+
builder = builder.default_headers(headers);
5571
}
72+
5673
let client = builder
5774
.timeout(Duration::from_secs(timeout.unwrap_or(60)))
5875
.build()
5976
.unwrap();
6077

6178
let builder = reqwest_middleware::ClientBuilder::new(client);
79+
6280
#[cfg(feature = "tracing")]
6381
let builder = builder.with(LoggingMiddleware);
82+
6483
let client = builder.build();
6584

6685
Self {

0 commit comments

Comments
 (0)