From ba2da9d125e3ea74c88460bd6b83d0f913886d9b Mon Sep 17 00:00:00 2001 From: Stoiko Ivanov Date: Tue, 9 Nov 2021 16:54:16 +0000 Subject: [PATCH] client: add support for proxies by storing the proxy url as string in the struct and setting it on each invocation of `execute`, since execute calls reset on the curl::easy::Easy object. Signed-off-by: Stoiko Ivanov Signed-off-by: Wolfgang Bumiller --- src/client.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/client.rs b/src/client.rs index 8aeff979..9853fb61 100644 --- a/src/client.rs +++ b/src/client.rs @@ -91,6 +91,7 @@ impl Headers { struct Inner { easy: easy::Easy, nonce: Option, + proxy: Option, } impl Inner { @@ -98,6 +99,7 @@ impl Inner { Self { easy: easy::Easy::new(), nonce: None, + proxy: None, } } @@ -120,6 +122,10 @@ impl Inner { self.easy.url(url)?; + if let Some(p) = &self.proxy { + self.easy.proxy(&p)?; + } + { let mut transfer = self.easy.transfer(); @@ -156,6 +162,10 @@ impl Inner { }) } + pub fn set_proxy(&mut self, proxy: String) { + self.proxy = Some(proxy); + } + /// Low-level API to run an n API request. This automatically updates the current nonce! fn run_request(&mut self, request: Request) -> Result { self.easy.reset(); @@ -586,6 +596,11 @@ impl Client { } } } + + /// Set a proxy + pub fn set_proxy(&mut self, proxy: String) { + self.inner.set_proxy(proxy) + } } fn parse_header(data: &[u8]) -> Option<(&str, &str)> {