From c0147e49c4bd796062c4f5eb7f00e7b8a812006d Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 28 Apr 2021 12:00:21 +0200 Subject: [PATCH] tools/http: make user agent configurable --- src/tools/http.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/tools/http.rs b/src/tools/http.rs index a4299fb4..8656e685 100644 --- a/src/tools/http.rs +++ b/src/tools/http.rs @@ -103,6 +103,7 @@ impl ProxyConfig { pub struct SimpleHttp { client: Client, proxy_authorization: Option, // Proxy-Authorization header value + user_agent: Option, } impl SimpleHttp { @@ -129,7 +130,12 @@ impl SimpleHttp { https.set_proxy(proxy_config); } let client = Client::builder().build(https); - Self { client, proxy_authorization} + Self { client, proxy_authorization, user_agent: None } + } + + pub fn set_user_agent(&mut self, user_agent: &str) -> Result<(), Error> { + self.user_agent = Some(user_agent.to_owned()); + Ok(()) } fn add_proxy_headers(&self, request: &mut Request) -> Result<(), Error> { @@ -147,11 +153,13 @@ impl SimpleHttp { } pub async fn request(&self, mut request: Request) -> Result, Error> { + let user_agent = if let Some(ref user_agent) = self.user_agent { + HeaderValue::from_str(&user_agent)? + } else { + HeaderValue::from_str(Self::DEFAULT_USER_AGENT_STRING)? + }; - request.headers_mut().insert( - hyper::header::USER_AGENT, - HeaderValue::from_str(Self::DEFAULT_USER_AGENT_STRING)?, - ); + request.headers_mut().insert(hyper::header::USER_AGENT, user_agent); self.add_proxy_headers(&mut request)?;