@@ -3,8 +3,7 @@ use std::time::Duration;
33use anyhow:: { Context , Result } ;
44use headers:: { Authorization , HeaderMapExt } ;
55use percent_encoding:: utf8_percent_encode;
6- use reqwest:: header:: HeaderMap ;
7- use reqwest:: Response ;
6+ use reqwest:: { header:: HeaderMap , Response } ;
87use reqwest_middleware:: { ClientWithMiddleware , RequestBuilder } ;
98use serde:: { Deserialize , Serialize } ;
109use shuttle_common:: models:: {
@@ -22,16 +21,18 @@ use shuttle_common::models::{
2221 user:: UserResponse ,
2322} ;
2423use 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" ) ]
2929mod middleware;
3030#[ cfg( feature = "tracing" ) ]
31- use crate :: middleware:: LoggingMiddleware ;
32- #[ cfg( feature = "tracing" ) ]
3331use tracing:: { debug, error} ;
3432
33+ #[ cfg( feature = "tracing" ) ]
34+ use crate :: middleware:: LoggingMiddleware ;
35+
3536pub mod util;
3637use 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