From a2672aef4624fcbecc971efb5f709cf868010681 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Tue, 7 Apr 2026 10:31:07 -0400 Subject: [PATCH] refactor(cli): centralize HTTP client builder with User-Agent header Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/crates/fabro-cli/src/server_client.rs | 2 +- lib/crates/fabro-cli/src/user_config.rs | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/crates/fabro-cli/src/server_client.rs b/lib/crates/fabro-cli/src/server_client.rs index d67f2b26d..36cb5e124 100644 --- a/lib/crates/fabro-cli/src/server_client.rs +++ b/lib/crates/fabro-cli/src/server_client.rs @@ -211,7 +211,7 @@ fn normalize_remote_server_target(api_url: &str) -> String { } pub(crate) async fn connect_unix_socket_api_client(path: &Path) -> Result { - let http_client = reqwest::ClientBuilder::new() + let http_client = crate::user_config::cli_http_client_builder() .unix_socket(path) .no_proxy() .build() diff --git a/lib/crates/fabro-cli/src/user_config.rs b/lib/crates/fabro-cli/src/user_config.rs index c52176f4f..a6b929d9f 100644 --- a/lib/crates/fabro-cli/src/user_config.rs +++ b/lib/crates/fabro-cli/src/user_config.rs @@ -132,11 +132,16 @@ pub(crate) fn exec_server_target( Ok(target) } +pub(crate) fn cli_http_client_builder() -> reqwest::ClientBuilder { + reqwest::Client::builder() + .user_agent(format!("fabro-cli/{}", fabro_util::version::FABRO_VERSION)) +} + pub(crate) fn build_server_client( tls: Option<&ClientTlsSettings>, ) -> anyhow::Result { let Some(tls) = tls else { - return Ok(reqwest::Client::new()); + return Ok(cli_http_client_builder().build()?); }; let cert_path = fabro_config::expand_tilde(&tls.cert); @@ -154,7 +159,7 @@ pub(crate) fn build_server_client( let identity = reqwest::Identity::from_pem(&identity_pem)?; let ca_cert = reqwest::Certificate::from_pem(&ca_pem)?; - let client = reqwest::Client::builder() + let client = cli_http_client_builder() .use_rustls_tls() .identity(identity) .add_root_certificate(ca_cert)