all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox 0/4] http: sync: user-agent improvements
@ 2023-03-03 11:39 Fabian Grünbichler
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 1/4] http: sync: set user-agent via ureq agent Fabian Grünbichler
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Fabian Grünbichler @ 2023-03-03 11:39 UTC (permalink / raw)
  To: pbs-devel

stumbled upon these while testing the ureq fix linked in the first patch.

Fabian Grünbichler (4):
  http: sync: set user-agent via ureq agent
  http: sync: remove redundant calls for setting User-Agent
  http: sync: derive default user-agent from crate version
  http: sync: drop unused &self parameter

 proxmox-http/src/client/sync.rs | 55 ++++++++++++---------------------
 1 file changed, 20 insertions(+), 35 deletions(-)

-- 
2.30.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pbs-devel] [PATCH proxmox 1/4] http: sync: set user-agent via ureq agent
  2023-03-03 11:39 [pbs-devel] [PATCH proxmox 0/4] http: sync: user-agent improvements Fabian Grünbichler
@ 2023-03-03 11:39 ` Fabian Grünbichler
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 2/4] http: sync: remove redundant calls for setting User-Agent Fabian Grünbichler
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Fabian Grünbichler @ 2023-03-03 11:39 UTC (permalink / raw)
  To: pbs-devel

this allows us to slim down our code, and once
https://github.com/algesten/ureq/pull/597 is merged upstream (and/or we update
to a version containing the fix) it also means the custom user agent is used
for requests to the proxy host, if one is configured.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
 proxmox-http/src/client/sync.rs | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/proxmox-http/src/client/sync.rs b/proxmox-http/src/client/sync.rs
index 41b9c79..9465d8e 100644
--- a/proxmox-http/src/client/sync.rs
+++ b/proxmox-http/src/client/sync.rs
@@ -22,6 +22,14 @@ impl Client {
 
     fn agent(&self) -> Result<ureq::Agent, Error> {
         let mut builder = ureq::AgentBuilder::new();
+
+        builder = builder.user_agent(
+            self.options
+                .user_agent
+                .as_deref()
+                .unwrap_or(DEFAULT_USER_AGENT_STRING),
+        );
+
         if let Some(proxy_config) = &self.options.proxy_config {
             builder = builder.proxy(ureq::Proxy::new(proxy_config.to_proxy_string()?)?);
         }
-- 
2.30.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pbs-devel] [PATCH proxmox 2/4] http: sync: remove redundant calls for setting User-Agent
  2023-03-03 11:39 [pbs-devel] [PATCH proxmox 0/4] http: sync: user-agent improvements Fabian Grünbichler
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 1/4] http: sync: set user-agent via ureq agent Fabian Grünbichler
@ 2023-03-03 11:39 ` Fabian Grünbichler
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 3/4] http: sync: derive default user-agent from crate version Fabian Grünbichler
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Fabian Grünbichler @ 2023-03-03 11:39 UTC (permalink / raw)
  To: pbs-devel

the requests are all created via the agent that already contains the user
agent, so this internal helper isn't needed anymore.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
AFAICT at least, there shouldn't be anything relying on the agent being present
as manually added header..

 proxmox-http/src/client/sync.rs | 16 ----------------
 1 file changed, 16 deletions(-)

diff --git a/proxmox-http/src/client/sync.rs b/proxmox-http/src/client/sync.rs
index 9465d8e..228f839 100644
--- a/proxmox-http/src/client/sync.rs
+++ b/proxmox-http/src/client/sync.rs
@@ -37,19 +37,7 @@ impl Client {
         Ok(builder.build())
     }
 
-    fn add_user_agent(&self, req: ureq::Request) -> ureq::Request {
-        req.set(
-            "User-Agent",
-            self.options
-                .user_agent
-                .as_deref()
-                .unwrap_or(DEFAULT_USER_AGENT_STRING),
-        )
-    }
-
     fn call(&self, req: ureq::Request) -> Result<ureq::Response, Error> {
-        let req = self.add_user_agent(req);
-
         req.call().map_err(Into::into)
     }
 
@@ -57,8 +45,6 @@ impl Client {
     where
         R: Read,
     {
-        let req = self.add_user_agent(req);
-
         req.send(body).map_err(Into::into)
     }
 
@@ -147,7 +133,6 @@ impl HttpClient<String, String> for Client {
         let mut req = self
             .agent()?
             .request(request.method().as_str(), &request.uri().to_string());
-        req = self.add_user_agent(req);
 
         let orig_headers = request.headers();
 
@@ -195,7 +180,6 @@ impl HttpClient<&[u8], Vec<u8>> for Client {
         let mut req = self
             .agent()?
             .request(request.method().as_str(), &request.uri().to_string());
-        req = self.add_user_agent(req);
 
         let orig_headers = request.headers();
 
-- 
2.30.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pbs-devel] [PATCH proxmox 3/4] http: sync: derive default user-agent from crate version
  2023-03-03 11:39 [pbs-devel] [PATCH proxmox 0/4] http: sync: user-agent improvements Fabian Grünbichler
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 1/4] http: sync: set user-agent via ureq agent Fabian Grünbichler
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 2/4] http: sync: remove redundant calls for setting User-Agent Fabian Grünbichler
@ 2023-03-03 11:39 ` Fabian Grünbichler
  2023-03-07  8:40   ` Wolfgang Bumiller
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 4/4] http: sync: drop unused &self parameter Fabian Grünbichler
  2023-03-07  8:31 ` [pbs-devel] applied-series: [PATCH proxmox 0/4] http: sync: user-agent improvements Wolfgang Bumiller
  4 siblings, 1 reply; 7+ messages in thread
From: Fabian Grünbichler @ 2023-03-03 11:39 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
if we want a fall back in case rustc is called manually, not by cargo, we could
also use option_env!..

 proxmox-http/src/client/sync.rs | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/proxmox-http/src/client/sync.rs b/proxmox-http/src/client/sync.rs
index 228f839..3485f84 100644
--- a/proxmox-http/src/client/sync.rs
+++ b/proxmox-http/src/client/sync.rs
@@ -7,8 +7,6 @@ use http::Response;
 use crate::HttpClient;
 use crate::HttpOptions;
 
-pub const DEFAULT_USER_AGENT_STRING: &str = "proxmox-sync-http-client/0.1";
-
 #[derive(Default)]
 /// Blocking HTTP client for usage with [`HttpClient`].
 pub struct Client {
@@ -23,12 +21,10 @@ impl Client {
     fn agent(&self) -> Result<ureq::Agent, Error> {
         let mut builder = ureq::AgentBuilder::new();
 
-        builder = builder.user_agent(
-            self.options
-                .user_agent
-                .as_deref()
-                .unwrap_or(DEFAULT_USER_AGENT_STRING),
-        );
+        builder = builder.user_agent(self.options.user_agent.as_deref().unwrap_or(&format!(
+            "proxmox-sync-http-client/{}",
+            env!("CARGO_PKG_VERSION")
+        )));
 
         if let Some(proxy_config) = &self.options.proxy_config {
             builder = builder.proxy(ureq::Proxy::new(proxy_config.to_proxy_string()?)?);
-- 
2.30.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pbs-devel] [PATCH proxmox 4/4] http: sync: drop unused &self parameter
  2023-03-03 11:39 [pbs-devel] [PATCH proxmox 0/4] http: sync: user-agent improvements Fabian Grünbichler
                   ` (2 preceding siblings ...)
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 3/4] http: sync: derive default user-agent from crate version Fabian Grünbichler
@ 2023-03-03 11:39 ` Fabian Grünbichler
  2023-03-07  8:31 ` [pbs-devel] applied-series: [PATCH proxmox 0/4] http: sync: user-agent improvements Wolfgang Bumiller
  4 siblings, 0 replies; 7+ messages in thread
From: Fabian Grünbichler @ 2023-03-03 11:39 UTC (permalink / raw)
  To: pbs-devel

these are just internal helpers, changing their signature is fine.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
---
 proxmox-http/src/client/sync.rs | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/proxmox-http/src/client/sync.rs b/proxmox-http/src/client/sync.rs
index 3485f84..ea081a7 100644
--- a/proxmox-http/src/client/sync.rs
+++ b/proxmox-http/src/client/sync.rs
@@ -33,11 +33,11 @@ impl Client {
         Ok(builder.build())
     }
 
-    fn call(&self, req: ureq::Request) -> Result<ureq::Response, Error> {
+    fn call(req: ureq::Request) -> Result<ureq::Response, Error> {
         req.call().map_err(Into::into)
     }
 
-    fn send<R>(&self, req: ureq::Request, body: R) -> Result<ureq::Response, Error>
+    fn send<R>(req: ureq::Request, body: R) -> Result<ureq::Response, Error>
     where
         R: Read,
     {
@@ -105,7 +105,7 @@ impl HttpClient<String, String> for Client {
         let req = self.agent()?.get(uri);
         let req = Self::add_headers(req, None, extra_headers);
 
-        self.call(req).and_then(Self::convert_response_to_string)
+        Self::call(req).and_then(Self::convert_response_to_string)
     }
 
     fn post(
@@ -119,8 +119,8 @@ impl HttpClient<String, String> for Client {
         let req = Self::add_headers(req, content_type, extra_headers);
 
         match body {
-            Some(body) => self.send(req, body.as_bytes()),
-            None => self.call(req),
+            Some(body) => Self::send(req, body.as_bytes()),
+            None => Self::call(req),
         }
         .and_then(Self::convert_response_to_string)
     }
@@ -138,8 +138,7 @@ impl HttpClient<String, String> for Client {
             }
         }
 
-        self.send(req, request.body().as_bytes())
-            .and_then(Self::convert_response_to_string)
+        Self::send(req, request.body().as_bytes()).and_then(Self::convert_response_to_string)
     }
 }
 
@@ -152,7 +151,7 @@ impl HttpClient<&[u8], Vec<u8>> for Client {
         let req = self.agent()?.get(uri);
         let req = Self::add_headers(req, None, extra_headers);
 
-        self.call(req).and_then(Self::convert_response_to_vec)
+        Self::call(req).and_then(Self::convert_response_to_vec)
     }
 
     fn post(
@@ -166,8 +165,8 @@ impl HttpClient<&[u8], Vec<u8>> for Client {
         let req = Self::add_headers(req, content_type, extra_headers);
 
         match body {
-            Some(body) => self.send(req, body),
-            None => self.call(req),
+            Some(body) => Self::send(req, body),
+            None => Self::call(req),
         }
         .and_then(Self::convert_response_to_vec)
     }
@@ -185,8 +184,7 @@ impl HttpClient<&[u8], Vec<u8>> for Client {
             }
         }
 
-        self.send(req, *request.body())
-            .and_then(Self::convert_response_to_vec)
+        Self::send(req, *request.body()).and_then(Self::convert_response_to_vec)
     }
 }
 
@@ -199,7 +197,7 @@ impl HttpClient<Box<dyn Read>, Box<dyn Read>> for Client {
         let req = self.agent()?.get(uri);
         let req = Self::add_headers(req, None, extra_headers);
 
-        self.call(req).and_then(Self::convert_response_to_reader)
+        Self::call(req).and_then(Self::convert_response_to_reader)
     }
 
     fn post(
@@ -213,8 +211,8 @@ impl HttpClient<Box<dyn Read>, Box<dyn Read>> for Client {
         let req = Self::add_headers(req, content_type, extra_headers);
 
         match body {
-            Some(body) => self.send(req, body),
-            None => self.call(req),
+            Some(body) => Self::send(req, body),
+            None => Self::call(req),
         }
         .and_then(Self::convert_response_to_reader)
     }
@@ -234,7 +232,6 @@ impl HttpClient<Box<dyn Read>, Box<dyn Read>> for Client {
             }
         }
 
-        self.send(req, Box::new(request.body_mut()))
-            .and_then(Self::convert_response_to_reader)
+        Self::send(req, Box::new(request.body_mut())).and_then(Self::convert_response_to_reader)
     }
 }
-- 
2.30.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pbs-devel] applied-series: [PATCH proxmox 0/4] http: sync: user-agent improvements
  2023-03-03 11:39 [pbs-devel] [PATCH proxmox 0/4] http: sync: user-agent improvements Fabian Grünbichler
                   ` (3 preceding siblings ...)
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 4/4] http: sync: drop unused &self parameter Fabian Grünbichler
@ 2023-03-07  8:31 ` Wolfgang Bumiller
  4 siblings, 0 replies; 7+ messages in thread
From: Wolfgang Bumiller @ 2023-03-07  8:31 UTC (permalink / raw)
  To: Fabian Grünbichler; +Cc: pbs-devel

applied, thanks




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pbs-devel] [PATCH proxmox 3/4] http: sync: derive default user-agent from crate version
  2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 3/4] http: sync: derive default user-agent from crate version Fabian Grünbichler
@ 2023-03-07  8:40   ` Wolfgang Bumiller
  0 siblings, 0 replies; 7+ messages in thread
From: Wolfgang Bumiller @ 2023-03-07  8:40 UTC (permalink / raw)
  To: Fabian Grünbichler; +Cc: pbs-devel

On Fri, Mar 03, 2023 at 12:39:23PM +0100, Fabian Grünbichler wrote:
> Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
> ---
> if we want a fall back in case rustc is called manually, not by cargo, we could
> also use option_env!..
> 
>  proxmox-http/src/client/sync.rs | 12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/proxmox-http/src/client/sync.rs b/proxmox-http/src/client/sync.rs
> index 228f839..3485f84 100644
> --- a/proxmox-http/src/client/sync.rs
> +++ b/proxmox-http/src/client/sync.rs
> @@ -7,8 +7,6 @@ use http::Response;
>  use crate::HttpClient;
>  use crate::HttpOptions;
>  
> -pub const DEFAULT_USER_AGENT_STRING: &str = "proxmox-sync-http-client/0.1";
> -
>  #[derive(Default)]
>  /// Blocking HTTP client for usage with [`HttpClient`].
>  pub struct Client {
> @@ -23,12 +21,10 @@ impl Client {
>      fn agent(&self) -> Result<ureq::Agent, Error> {
>          let mut builder = ureq::AgentBuilder::new();
>  
> -        builder = builder.user_agent(
> -            self.options
> -                .user_agent
> -                .as_deref()
> -                .unwrap_or(DEFAULT_USER_AGENT_STRING),
> -        );
> +        builder = builder.user_agent(self.options.user_agent.as_deref().unwrap_or(&format!(
> +            "proxmox-sync-http-client/{}",
> +            env!("CARGO_PKG_VERSION")
> +        )));

I just realized too late that here this could actually use `concat!()`
instead of `&format!` to avoid the extra allocation.

>  
>          if let Some(proxy_config) = &self.options.proxy_config {
>              builder = builder.proxy(ureq::Proxy::new(proxy_config.to_proxy_string()?)?);
> -- 
> 2.30.2




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-03-07  8:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-03 11:39 [pbs-devel] [PATCH proxmox 0/4] http: sync: user-agent improvements Fabian Grünbichler
2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 1/4] http: sync: set user-agent via ureq agent Fabian Grünbichler
2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 2/4] http: sync: remove redundant calls for setting User-Agent Fabian Grünbichler
2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 3/4] http: sync: derive default user-agent from crate version Fabian Grünbichler
2023-03-07  8:40   ` Wolfgang Bumiller
2023-03-03 11:39 ` [pbs-devel] [PATCH proxmox 4/4] http: sync: drop unused &self parameter Fabian Grünbichler
2023-03-07  8:31 ` [pbs-devel] applied-series: [PATCH proxmox 0/4] http: sync: user-agent improvements Wolfgang Bumiller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal