This is an automated email from the ASF dual-hosted git repository.

xuanwo pushed a commit to branch xuanwo/remove-http-client-api
in repository https://gitbox.apache.org/repos/asf/opendal.git

commit 51bef5d89354e9061f6a1bd92729b11743366915
Author: Xuanwo <[email protected]>
AuthorDate: Mon Dec 8 17:13:10 2025 +0800

    refactor(!): Remove deprecated http client config
    
    Signed-off-by: Xuanwo <[email protected]>
---
 .../core/src/docs/performance/http_optimization.md | 16 +++----
 core/core/src/services/aliyun_drive/backend.rs     | 22 ----------
 core/core/src/services/aliyun_drive/config.rs      |  5 +--
 core/core/src/services/alluxio/backend.rs          | 22 ----------
 core/core/src/services/alluxio/config.rs           |  5 +--
 core/core/src/services/b2/backend.rs               | 22 ----------
 core/core/src/services/b2/config.rs                |  5 +--
 core/core/src/services/cloudflare_kv/backend.rs    | 10 -----
 core/core/src/services/cloudflare_kv/config.rs     |  5 +--
 core/core/src/services/cos/backend.rs              | 22 ----------
 core/core/src/services/cos/config.rs               |  6 +--
 core/core/src/services/d1/backend.rs               | 16 ++-----
 core/core/src/services/d1/config.rs                |  5 +--
 core/core/src/services/dropbox/builder.rs          | 22 ----------
 core/core/src/services/dropbox/config.rs           |  5 +--
 core/core/src/services/gcs/backend.rs              | 22 ----------
 core/core/src/services/gcs/config.rs               |  1 -
 core/core/src/services/gdrive/builder.rs           | 22 ----------
 core/core/src/services/gdrive/config.rs            |  5 +--
 core/core/src/services/github/backend.rs           | 22 ----------
 core/core/src/services/github/config.rs            |  5 +--
 core/core/src/services/http/backend.rs             | 22 ----------
 core/core/src/services/http/config.rs              |  5 +--
 core/core/src/services/ipfs/backend.rs             | 16 -------
 core/core/src/services/ipfs/config.rs              |  5 +--
 core/core/src/services/ipmfs/builder.rs            | 16 -------
 core/core/src/services/ipmfs/config.rs             |  5 +--
 core/core/src/services/koofr/backend.rs            | 22 ----------
 core/core/src/services/koofr/config.rs             |  5 +--
 core/core/src/services/obs/backend.rs              | 22 ----------
 core/core/src/services/obs/config.rs               |  6 +--
 core/core/src/services/onedrive/builder.rs         | 22 ----------
 core/core/src/services/onedrive/config.rs          |  5 +--
 core/core/src/services/oss/backend.rs              | 22 ----------
 core/core/src/services/oss/config.rs               |  6 +--
 core/core/src/services/pcloud/backend.rs           | 22 ----------
 core/core/src/services/pcloud/config.rs            |  5 +--
 core/core/src/services/seafile/backend.rs          | 22 ----------
 core/core/src/services/seafile/config.rs           |  5 +--
 core/core/src/services/upyun/backend.rs            | 22 ----------
 core/core/src/services/upyun/config.rs             |  5 +--
 core/core/src/services/vercel_artifacts/builder.rs | 22 ----------
 core/core/src/services/vercel_artifacts/config.rs  |  5 +--
 core/core/src/services/vercel_blob/backend.rs      | 22 ----------
 core/core/src/services/vercel_blob/config.rs       |  5 +--
 core/core/src/services/webdav/backend.rs           | 22 ----------
 core/core/src/services/webdav/config.rs            |  5 +--
 core/core/src/services/yandex_disk/backend.rs      | 22 ----------
 core/core/src/services/yandex_disk/config.rs       |  5 +--
 core/core/src/types/builder.rs                     |  2 +-
 core/core/src/types/operator/operator.rs           | 49 ----------------------
 core/services/azblob/src/backend.rs                | 22 ----------
 core/services/azblob/src/config.rs                 |  6 +--
 core/services/azdls/src/backend.rs                 | 22 ----------
 core/services/azdls/src/config.rs                  |  5 +--
 core/services/azfile/src/backend.rs                | 22 ----------
 core/services/azfile/src/config.rs                 |  5 +--
 core/services/ghac/src/backend.rs                  | 22 ----------
 core/services/ghac/src/config.rs                   |  5 +--
 core/services/s3/src/backend.rs                    | 24 -----------
 core/services/s3/src/config.rs                     |  1 -
 61 files changed, 40 insertions(+), 778 deletions(-)

diff --git a/core/core/src/docs/performance/http_optimization.md 
b/core/core/src/docs/performance/http_optimization.md
index ece626423..95aa84dbc 100644
--- a/core/core/src/docs/performance/http_optimization.md
+++ b/core/core/src/docs/performance/http_optimization.md
@@ -23,8 +23,8 @@ let client = reqwest::ClientBuilder::new()
   .build()
   .expect("http client must be created");
 
-// Update the http client in the operator.
-let op = op.update_http_client(|_| HttpClient::with(client));
+// Update the http client in the operator via layer.
+let op = op.layer(HttpClientLayer::new(HttpClient::with(client)));
 ```
 
 ## DNS Caching
@@ -42,8 +42,8 @@ let client = reqwest::ClientBuilder::new()
   .build()
   .expect("http client must be created");
 
-// Update the http client in the operator.
-let op = op.update_http_client(|_| HttpClient::with(client));
+// Update the http client in the operator via layer.
+let op = op.layer(HttpClientLayer::new(HttpClient::with(client)));
 ```
 
 The default DNS cache settings from `hickory_dns` are generally sufficient for 
most workloads. However, if you have specific requirements—such as sharing the 
same DNS cache across multiple HTTP clients or configuring the DNS cache 
size—you can use the `Xuanwo/reqwest-hickory-resolver` crate to set up a custom 
DNS resolver.
@@ -75,8 +75,8 @@ let client = reqwest::ClientBuilder::new()
   .build()
   .expect("http client must be created");
 
-// Update the http client in the operator.
-let op = op.update_http_client(|_| HttpClient::with(client));
+// Update the http client in the operator via layer.
+let op = op.layer(HttpClientLayer::new(HttpClient::with(client)));
 ```
 
 The `ResolverOpts` has many options that can be configured. For a complete 
list of options, please refer to the [hickory_resolver 
documentation](https://docs.rs/hickory-resolver/latest/hickory_resolver/config/struct.ResolverOpts.html).
@@ -102,8 +102,8 @@ let client = reqwest::ClientBuilder::new()
   .build()
   .expect("http client must be created");
 
-// Update the http client in the operator.
-let op = op.update_http_client(|_| HttpClient::with(client));
+// Update the http client in the operator via layer.
+let op = op.layer(HttpClientLayer::new(HttpClient::with(client)));
 ```
 
 It's also recommended to use opendal's 
[`TimeoutLayer`][crate::layers::TimeoutLayer] to prevent slow requests hangs 
forever. This layer will automatically cancel the request if it takes too long 
to complete.
diff --git a/core/core/src/services/aliyun_drive/backend.rs 
b/core/core/src/services/aliyun_drive/backend.rs
index 27fdb6da7..f46a37d6c 100644
--- a/core/core/src/services/aliyun_drive/backend.rs
+++ b/core/core/src/services/aliyun_drive/backend.rs
@@ -39,9 +39,6 @@ use crate::*;
 #[derive(Default)]
 pub struct AliyunDriveBuilder {
     pub(super) config: AliyunDriveConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for AliyunDriveBuilder {
@@ -100,19 +97,6 @@ impl AliyunDriveBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for AliyunDriveBuilder {
@@ -187,12 +171,6 @@ impl Builder for AliyunDriveBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 endpoint: "https://openapi.alipan.com".to_string(),
diff --git a/core/core/src/services/aliyun_drive/config.rs 
b/core/core/src/services/aliyun_drive/config.rs
index 498576801..85c06bdaa 100644
--- a/core/core/src/services/aliyun_drive/config.rs
+++ b/core/core/src/services/aliyun_drive/config.rs
@@ -93,10 +93,7 @@ impl crate::Configurator for AliyunDriveConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        AliyunDriveBuilder {
-            config: self,
-            http_client: None,
-        }
+        AliyunDriveBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/alluxio/backend.rs 
b/core/core/src/services/alluxio/backend.rs
index 98dae6231..dcf62eda3 100644
--- a/core/core/src/services/alluxio/backend.rs
+++ b/core/core/src/services/alluxio/backend.rs
@@ -37,9 +37,6 @@ use crate::*;
 #[derive(Default)]
 pub struct AlluxioBuilder {
     pub(super) config: AlluxioConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for AlluxioBuilder {
@@ -75,19 +72,6 @@ impl AlluxioBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for AlluxioBuilder {
@@ -136,12 +120,6 @@ impl Builder for AlluxioBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/alluxio/config.rs 
b/core/core/src/services/alluxio/config.rs
index 70512d74b..44fcab44d 100644
--- a/core/core/src/services/alluxio/config.rs
+++ b/core/core/src/services/alluxio/config.rs
@@ -68,10 +68,7 @@ impl crate::Configurator for AlluxioConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        AlluxioBuilder {
-            config: self,
-            http_client: None,
-        }
+        AlluxioBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/b2/backend.rs 
b/core/core/src/services/b2/backend.rs
index 1f78f0ddc..9c5464fc2 100644
--- a/core/core/src/services/b2/backend.rs
+++ b/core/core/src/services/b2/backend.rs
@@ -43,9 +43,6 @@ use crate::*;
 #[derive(Default)]
 pub struct B2Builder {
     pub(super) config: B2Config,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for B2Builder {
@@ -107,19 +104,6 @@ impl B2Builder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for B2Builder {
@@ -220,12 +204,6 @@ impl Builder for B2Builder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 signer: Arc::new(RwLock::new(signer)),
diff --git a/core/core/src/services/b2/config.rs 
b/core/core/src/services/b2/config.rs
index 7910a4e99..6130f12a0 100644
--- a/core/core/src/services/b2/config.rs
+++ b/core/core/src/services/b2/config.rs
@@ -81,10 +81,7 @@ impl crate::Configurator for B2Config {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        B2Builder {
-            config: self,
-            http_client: None,
-        }
+        B2Builder { config: self }
     }
 }
 
diff --git a/core/core/src/services/cloudflare_kv/backend.rs 
b/core/core/src/services/cloudflare_kv/backend.rs
index 76395829d..49546af3c 100644
--- a/core/core/src/services/cloudflare_kv/backend.rs
+++ b/core/core/src/services/cloudflare_kv/backend.rs
@@ -36,10 +36,6 @@ use crate::*;
 #[derive(Default)]
 pub struct CloudflareKvBuilder {
     pub(super) config: CloudflareKvConfig,
-
-    /// The HTTP client used to communicate with CloudFlare.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for CloudflareKvBuilder {
@@ -182,12 +178,6 @@ impl Builder for CloudflareKvBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
             }),
diff --git a/core/core/src/services/cloudflare_kv/config.rs 
b/core/core/src/services/cloudflare_kv/config.rs
index 27956d10a..ff2ec42c0 100644
--- a/core/core/src/services/cloudflare_kv/config.rs
+++ b/core/core/src/services/cloudflare_kv/config.rs
@@ -95,10 +95,7 @@ impl crate::Configurator for CloudflareKvConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        CloudflareKvBuilder {
-            config: self,
-            http_client: None,
-        }
+        CloudflareKvBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/cos/backend.rs 
b/core/core/src/services/cos/backend.rs
index 8d7fc832f..aafd7f368 100644
--- a/core/core/src/services/cos/backend.rs
+++ b/core/core/src/services/cos/backend.rs
@@ -44,9 +44,6 @@ use crate::*;
 #[derive(Default)]
 pub struct CosBuilder {
     pub(super) config: CosConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for CosBuilder {
@@ -135,19 +132,6 @@ impl CosBuilder {
         self.config.disable_config_load = true;
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for CosBuilder {
@@ -267,12 +251,6 @@ impl Builder for CosBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 bucket: bucket.clone(),
diff --git a/core/core/src/services/cos/config.rs 
b/core/core/src/services/cos/config.rs
index 5019bba6d..edca70f3b 100644
--- a/core/core/src/services/cos/config.rs
+++ b/core/core/src/services/cos/config.rs
@@ -73,11 +73,7 @@ impl crate::Configurator for CosConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        CosBuilder {
-            config: self,
-
-            http_client: None,
-        }
+        CosBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/d1/backend.rs 
b/core/core/src/services/d1/backend.rs
index 2fee684a1..f74ae0cff 100644
--- a/core/core/src/services/d1/backend.rs
+++ b/core/core/src/services/d1/backend.rs
@@ -30,9 +30,6 @@ use crate::*;
 #[derive(Default)]
 pub struct D1Builder {
     pub(super) config: D1Config,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for D1Builder {
@@ -145,15 +142,10 @@ impl Builder for D1Builder {
             ));
         };
 
-        #[allow(deprecated)]
-        let client = if let Some(client) = self.http_client {
-            client
-        } else {
-            HttpClient::new().map_err(|err| {
-                err.with_operation("Builder::build")
-                    .with_context("service", D1_SCHEME)
-            })?
-        };
+        let client = HttpClient::new().map_err(|err| {
+            err.with_operation("Builder::build")
+                .with_context("service", D1_SCHEME)
+        })?;
 
         let Some(table) = config.table.clone() else {
             return Err(Error::new(ErrorKind::ConfigInvalid, "table is 
required"));
diff --git a/core/core/src/services/d1/config.rs 
b/core/core/src/services/d1/config.rs
index 25c61b006..30c920822 100644
--- a/core/core/src/services/d1/config.rs
+++ b/core/core/src/services/d1/config.rs
@@ -100,10 +100,7 @@ impl crate::Configurator for D1Config {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        D1Builder {
-            config: self,
-            http_client: None,
-        }
+        D1Builder { config: self }
     }
 }
 
diff --git a/core/core/src/services/dropbox/builder.rs 
b/core/core/src/services/dropbox/builder.rs
index bcda4694e..6c51675c4 100644
--- a/core/core/src/services/dropbox/builder.rs
+++ b/core/core/src/services/dropbox/builder.rs
@@ -33,9 +33,6 @@ use crate::*;
 #[derive(Default)]
 pub struct DropboxBuilder {
     pub(super) config: DropboxConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for DropboxBuilder {
@@ -96,19 +93,6 @@ impl DropboxBuilder {
         self.config.client_secret = Some(client_secret.to_string());
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, http_client: HttpClient) -> Self {
-        self.http_client = Some(http_client);
-        self
-    }
 }
 
 impl Builder for DropboxBuilder {
@@ -192,12 +176,6 @@ impl Builder for DropboxBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/dropbox/config.rs 
b/core/core/src/services/dropbox/config.rs
index 179224258..ddd1fd11c 100644
--- a/core/core/src/services/dropbox/config.rs
+++ b/core/core/src/services/dropbox/config.rs
@@ -64,10 +64,7 @@ impl crate::Configurator for DropboxConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        DropboxBuilder {
-            config: self,
-            http_client: None,
-        }
+        DropboxBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/gcs/backend.rs 
b/core/core/src/services/gcs/backend.rs
index c57cd9b00..70c218f3e 100644
--- a/core/core/src/services/gcs/backend.rs
+++ b/core/core/src/services/gcs/backend.rs
@@ -45,9 +45,6 @@ const DEFAULT_GCS_SCOPE: &str = 
"https://www.googleapis.com/auth/devstorage.read
 #[derive(Default)]
 pub struct GcsBuilder {
     pub(super) config: GcsConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
     pub(super) customized_token_loader: Option<Box<dyn GoogleTokenLoad>>,
 }
 
@@ -141,19 +138,6 @@ impl GcsBuilder {
         self
     }
 
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
-
     /// Specify the customized token loader used by this service.
     pub fn customized_token_loader(mut self, token_load: Box<dyn 
GoogleTokenLoad>) -> Self {
         self.customized_token_loader = Some(token_load);
@@ -346,12 +330,6 @@ impl Builder for GcsBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 endpoint,
diff --git a/core/core/src/services/gcs/config.rs 
b/core/core/src/services/gcs/config.rs
index 870494f03..a24d6d4e3 100644
--- a/core/core/src/services/gcs/config.rs
+++ b/core/core/src/services/gcs/config.rs
@@ -105,7 +105,6 @@ impl crate::Configurator for GcsConfig {
     fn into_builder(self) -> Self::Builder {
         GcsBuilder {
             config: self,
-            http_client: None,
             customized_token_loader: None,
         }
     }
diff --git a/core/core/src/services/gdrive/builder.rs 
b/core/core/src/services/gdrive/builder.rs
index 5abe7e7ed..8947a454f 100644
--- a/core/core/src/services/gdrive/builder.rs
+++ b/core/core/src/services/gdrive/builder.rs
@@ -35,9 +35,6 @@ use crate::*;
 #[doc = include_str!("docs.md")]
 pub struct GdriveBuilder {
     pub(super) config: GdriveConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for GdriveBuilder {
@@ -100,19 +97,6 @@ impl GdriveBuilder {
         self.config.client_secret = Some(client_secret.to_string());
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, http_client: HttpClient) -> Self {
-        self.http_client = Some(http_client);
-        self
-    }
 }
 
 impl Builder for GdriveBuilder {
@@ -144,12 +128,6 @@ impl Builder for GdriveBuilder {
                 ..Default::default()
             });
 
-        // allow deprecated api here for compatibility
-        #[allow(deprecated)]
-        if let Some(client) = self.http_client {
-            info.update_http_client(|_| client);
-        }
-
         let accessor_info = Arc::new(info);
         let mut signer = GdriveSigner::new(accessor_info.clone());
         match (self.config.access_token, self.config.refresh_token) {
diff --git a/core/core/src/services/gdrive/config.rs 
b/core/core/src/services/gdrive/config.rs
index 3360da3eb..bdfe47353 100644
--- a/core/core/src/services/gdrive/config.rs
+++ b/core/core/src/services/gdrive/config.rs
@@ -64,10 +64,7 @@ impl crate::Configurator for GdriveConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        GdriveBuilder {
-            config: self,
-            http_client: None,
-        }
+        GdriveBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/github/backend.rs 
b/core/core/src/services/github/backend.rs
index 020651d7f..b48373071 100644
--- a/core/core/src/services/github/backend.rs
+++ b/core/core/src/services/github/backend.rs
@@ -40,9 +40,6 @@ use crate::*;
 #[derive(Default)]
 pub struct GithubBuilder {
     pub(super) config: GithubConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for GithubBuilder {
@@ -90,19 +87,6 @@ impl GithubBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for GithubBuilder {
@@ -159,12 +143,6 @@ impl Builder for GithubBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/github/config.rs 
b/core/core/src/services/github/config.rs
index 40aa49899..e160dcb2e 100644
--- a/core/core/src/services/github/config.rs
+++ b/core/core/src/services/github/config.rs
@@ -106,10 +106,7 @@ impl crate::Configurator for GithubConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        GithubBuilder {
-            config: self,
-            http_client: None,
-        }
+        GithubBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/http/backend.rs 
b/core/core/src/services/http/backend.rs
index 53c1cce1f..5d490cd22 100644
--- a/core/core/src/services/http/backend.rs
+++ b/core/core/src/services/http/backend.rs
@@ -34,9 +34,6 @@ use crate::*;
 #[derive(Default)]
 pub struct HttpBuilder {
     pub(super) config: HttpConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for HttpBuilder {
@@ -101,19 +98,6 @@ impl HttpBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for HttpBuilder {
@@ -166,12 +150,6 @@ impl Builder for HttpBuilder {
                 ..Default::default()
             });
 
-        // allow deprecated api here for compatibility
-        #[allow(deprecated)]
-        if let Some(client) = self.http_client {
-            info.update_http_client(|_| client);
-        }
-
         let accessor_info = Arc::new(info);
 
         let core = Arc::new(HttpCore {
diff --git a/core/core/src/services/http/config.rs 
b/core/core/src/services/http/config.rs
index 9bf9fb785..05aa8569a 100644
--- a/core/core/src/services/http/config.rs
+++ b/core/core/src/services/http/config.rs
@@ -69,10 +69,7 @@ impl crate::Configurator for HttpConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        HttpBuilder {
-            config: self,
-            http_client: None,
-        }
+        HttpBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/ipfs/backend.rs 
b/core/core/src/services/ipfs/backend.rs
index 4f6767412..f7d78389a 100644
--- a/core/core/src/services/ipfs/backend.rs
+++ b/core/core/src/services/ipfs/backend.rs
@@ -36,9 +36,6 @@ use crate::*;
 #[derive(Default)]
 pub struct IpfsBuilder {
     pub(super) config: IpfsConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for IpfsBuilder {
@@ -86,19 +83,6 @@ impl IpfsBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for IpfsBuilder {
diff --git a/core/core/src/services/ipfs/config.rs 
b/core/core/src/services/ipfs/config.rs
index c06e8621b..5f7cdc825 100644
--- a/core/core/src/services/ipfs/config.rs
+++ b/core/core/src/services/ipfs/config.rs
@@ -51,10 +51,7 @@ impl crate::Configurator for IpfsConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        IpfsBuilder {
-            config: self,
-            http_client: None,
-        }
+        IpfsBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/ipmfs/builder.rs 
b/core/core/src/services/ipmfs/builder.rs
index 59898ba77..eef4312ff 100644
--- a/core/core/src/services/ipmfs/builder.rs
+++ b/core/core/src/services/ipmfs/builder.rs
@@ -70,9 +70,6 @@ use crate::*;
 #[derive(Default)]
 pub struct IpmfsBuilder {
     pub(super) config: IpmfsConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for IpmfsBuilder {
@@ -106,19 +103,6 @@ impl IpmfsBuilder {
         };
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for IpmfsBuilder {
diff --git a/core/core/src/services/ipmfs/config.rs 
b/core/core/src/services/ipmfs/config.rs
index 3e2c21de4..010715944 100644
--- a/core/core/src/services/ipmfs/config.rs
+++ b/core/core/src/services/ipmfs/config.rs
@@ -51,10 +51,7 @@ impl crate::Configurator for IpmfsConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        IpmfsBuilder {
-            config: self,
-            http_client: None,
-        }
+        IpmfsBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/koofr/backend.rs 
b/core/core/src/services/koofr/backend.rs
index 6a2481109..5b3497a0a 100644
--- a/core/core/src/services/koofr/backend.rs
+++ b/core/core/src/services/koofr/backend.rs
@@ -43,9 +43,6 @@ use crate::*;
 #[derive(Default)]
 pub struct KoofrBuilder {
     pub(super) config: KoofrConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for KoofrBuilder {
@@ -107,19 +104,6 @@ impl KoofrBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for KoofrBuilder {
@@ -186,12 +170,6 @@ impl Builder for KoofrBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/koofr/config.rs 
b/core/core/src/services/koofr/config.rs
index b23be5fe3..3f0e6b288 100644
--- a/core/core/src/services/koofr/config.rs
+++ b/core/core/src/services/koofr/config.rs
@@ -87,10 +87,7 @@ impl crate::Configurator for KoofrConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        KoofrBuilder {
-            config: self,
-            http_client: None,
-        }
+        KoofrBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/obs/backend.rs 
b/core/core/src/services/obs/backend.rs
index 168e84040..940eecad2 100644
--- a/core/core/src/services/obs/backend.rs
+++ b/core/core/src/services/obs/backend.rs
@@ -44,9 +44,6 @@ use crate::*;
 #[derive(Default)]
 pub struct ObsBuilder {
     pub(super) config: ObsConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for ObsBuilder {
@@ -125,19 +122,6 @@ impl ObsBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for ObsBuilder {
@@ -262,12 +246,6 @@ impl Builder for ObsBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 bucket,
diff --git a/core/core/src/services/obs/config.rs 
b/core/core/src/services/obs/config.rs
index 1977305d1..dd483b1a0 100644
--- a/core/core/src/services/obs/config.rs
+++ b/core/core/src/services/obs/config.rs
@@ -71,11 +71,7 @@ impl crate::Configurator for ObsConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        ObsBuilder {
-            config: self,
-
-            http_client: None,
-        }
+        ObsBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/onedrive/builder.rs 
b/core/core/src/services/onedrive/builder.rs
index a058d27f1..0d7b977c2 100644
--- a/core/core/src/services/onedrive/builder.rs
+++ b/core/core/src/services/onedrive/builder.rs
@@ -34,9 +34,6 @@ use crate::*;
 #[derive(Default)]
 pub struct OnedriveBuilder {
     pub(super) config: OnedriveConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for OnedriveBuilder {
@@ -59,19 +56,6 @@ impl OnedriveBuilder {
         self
     }
 
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, http_client: HttpClient) -> Self {
-        self.http_client = Some(http_client);
-        self
-    }
-
     /// Set the access token for a time limited access to Microsoft Graph API 
(also OneDrive).
     ///
     /// Microsoft Graph API uses a typical OAuth 2.0 flow for authentication 
and authorization.
@@ -162,12 +146,6 @@ impl Builder for OnedriveBuilder {
                 ..Default::default()
             });
 
-        // allow deprecated api here for compatibility
-        #[allow(deprecated)]
-        if let Some(client) = self.http_client {
-            info.update_http_client(|_| client);
-        }
-
         let accessor_info = Arc::new(info);
         let mut signer = OneDriveSigner::new(accessor_info.clone());
 
diff --git a/core/core/src/services/onedrive/config.rs 
b/core/core/src/services/onedrive/config.rs
index 369894636..3dd3e6281 100644
--- a/core/core/src/services/onedrive/config.rs
+++ b/core/core/src/services/onedrive/config.rs
@@ -73,10 +73,7 @@ impl crate::Configurator for OnedriveConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        OnedriveBuilder {
-            config: self,
-            http_client: None,
-        }
+        OnedriveBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/oss/backend.rs 
b/core/core/src/services/oss/backend.rs
index 0e6a5aa01..b7c59d7b5 100644
--- a/core/core/src/services/oss/backend.rs
+++ b/core/core/src/services/oss/backend.rs
@@ -46,9 +46,6 @@ const DEFAULT_BATCH_MAX_OPERATIONS: usize = 1000;
 #[derive(Default)]
 pub struct OssBuilder {
     pub(super) config: OssConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for OssBuilder {
@@ -178,19 +175,6 @@ impl OssBuilder {
         self
     }
 
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
-
     /// preprocess the endpoint option
     fn parse_endpoint(
         &self,
@@ -561,12 +545,6 @@ impl Builder for OssBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/oss/config.rs 
b/core/core/src/services/oss/config.rs
index c98b9f668..46b377422 100644
--- a/core/core/src/services/oss/config.rs
+++ b/core/core/src/services/oss/config.rs
@@ -131,11 +131,7 @@ impl crate::Configurator for OssConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        OssBuilder {
-            config: self,
-
-            http_client: None,
-        }
+        OssBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/pcloud/backend.rs 
b/core/core/src/services/pcloud/backend.rs
index 553552eb1..b704e11cc 100644
--- a/core/core/src/services/pcloud/backend.rs
+++ b/core/core/src/services/pcloud/backend.rs
@@ -40,9 +40,6 @@ use crate::*;
 #[derive(Default)]
 pub struct PcloudBuilder {
     pub(super) config: PcloudConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for PcloudBuilder {
@@ -103,19 +100,6 @@ impl PcloudBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for PcloudBuilder {
@@ -177,12 +161,6 @@ impl Builder for PcloudBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/pcloud/config.rs 
b/core/core/src/services/pcloud/config.rs
index 08423136d..8c35e180a 100644
--- a/core/core/src/services/pcloud/config.rs
+++ b/core/core/src/services/pcloud/config.rs
@@ -69,10 +69,7 @@ impl crate::Configurator for PcloudConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        PcloudBuilder {
-            config: self,
-            http_client: None,
-        }
+        PcloudBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/seafile/backend.rs 
b/core/core/src/services/seafile/backend.rs
index d0d11de3f..4e965fc9f 100644
--- a/core/core/src/services/seafile/backend.rs
+++ b/core/core/src/services/seafile/backend.rs
@@ -42,9 +42,6 @@ use crate::*;
 #[derive(Default)]
 pub struct SeafileBuilder {
     pub(super) config: SeafileConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for SeafileBuilder {
@@ -116,19 +113,6 @@ impl SeafileBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for SeafileBuilder {
@@ -194,12 +178,6 @@ impl Builder for SeafileBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/seafile/config.rs 
b/core/core/src/services/seafile/config.rs
index fd855e6a6..0d3e0de2e 100644
--- a/core/core/src/services/seafile/config.rs
+++ b/core/core/src/services/seafile/config.rs
@@ -89,10 +89,7 @@ impl crate::Configurator for SeafileConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        SeafileBuilder {
-            config: self,
-            http_client: None,
-        }
+        SeafileBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/upyun/backend.rs 
b/core/core/src/services/upyun/backend.rs
index 6f4b9247b..565315292 100644
--- a/core/core/src/services/upyun/backend.rs
+++ b/core/core/src/services/upyun/backend.rs
@@ -38,9 +38,6 @@ use crate::*;
 #[derive(Default)]
 pub struct UpyunBuilder {
     pub(super) config: UpyunConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for UpyunBuilder {
@@ -99,19 +96,6 @@ impl UpyunBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for UpyunBuilder {
@@ -187,12 +171,6 @@ impl Builder for UpyunBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/upyun/config.rs 
b/core/core/src/services/upyun/config.rs
index 34c34efdc..d881f437a 100644
--- a/core/core/src/services/upyun/config.rs
+++ b/core/core/src/services/upyun/config.rs
@@ -68,10 +68,7 @@ impl crate::Configurator for UpyunConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        UpyunBuilder {
-            config: self,
-            http_client: None,
-        }
+        UpyunBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/vercel_artifacts/builder.rs 
b/core/core/src/services/vercel_artifacts/builder.rs
index 85bda0647..8d1e6b879 100644
--- a/core/core/src/services/vercel_artifacts/builder.rs
+++ b/core/core/src/services/vercel_artifacts/builder.rs
@@ -30,9 +30,6 @@ use crate::*;
 #[derive(Default)]
 pub struct VercelArtifactsBuilder {
     pub(super) config: VercelArtifactsConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for VercelArtifactsBuilder {
@@ -51,19 +48,6 @@ impl VercelArtifactsBuilder {
         self.config.access_token = Some(access_token.to_string());
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, http_client: HttpClient) -> Self {
-        self.http_client = Some(http_client);
-        self
-    }
 }
 
 impl Builder for VercelArtifactsBuilder {
@@ -84,12 +68,6 @@ impl Builder for VercelArtifactsBuilder {
                 ..Default::default()
             });
 
-        // allow deprecated api here for compatibility
-        #[allow(deprecated)]
-        if let Some(client) = self.http_client {
-            info.update_http_client(|_| client);
-        }
-
         match self.config.access_token.clone() {
             Some(access_token) => Ok(VercelArtifactsBackend {
                 core: Arc::new(VercelArtifactsCore {
diff --git a/core/core/src/services/vercel_artifacts/config.rs 
b/core/core/src/services/vercel_artifacts/config.rs
index 864d9e7c1..eba0663c1 100644
--- a/core/core/src/services/vercel_artifacts/config.rs
+++ b/core/core/src/services/vercel_artifacts/config.rs
@@ -47,10 +47,7 @@ impl crate::Configurator for VercelArtifactsConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        VercelArtifactsBuilder {
-            config: self,
-            http_client: None,
-        }
+        VercelArtifactsBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/vercel_blob/backend.rs 
b/core/core/src/services/vercel_blob/backend.rs
index 3e59c7a0d..ba3eae581 100644
--- a/core/core/src/services/vercel_blob/backend.rs
+++ b/core/core/src/services/vercel_blob/backend.rs
@@ -41,9 +41,6 @@ use crate::*;
 #[derive(Default)]
 pub struct VercelBlobBuilder {
     pub(super) config: VercelBlobConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for VercelBlobBuilder {
@@ -78,19 +75,6 @@ impl VercelBlobBuilder {
         }
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for VercelBlobBuilder {
@@ -138,12 +122,6 @@ impl Builder for VercelBlobBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/vercel_blob/config.rs 
b/core/core/src/services/vercel_blob/config.rs
index bdd45390f..b2f217829 100644
--- a/core/core/src/services/vercel_blob/config.rs
+++ b/core/core/src/services/vercel_blob/config.rs
@@ -60,10 +60,7 @@ impl crate::Configurator for VercelBlobConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        VercelBlobBuilder {
-            config: self,
-            http_client: None,
-        }
+        VercelBlobBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/webdav/backend.rs 
b/core/core/src/services/webdav/backend.rs
index 64d9164ff..6de95a46f 100644
--- a/core/core/src/services/webdav/backend.rs
+++ b/core/core/src/services/webdav/backend.rs
@@ -38,9 +38,6 @@ use crate::*;
 #[derive(Default)]
 pub struct WebdavBuilder {
     pub(super) config: WebdavConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for WebdavBuilder {
@@ -105,19 +102,6 @@ impl WebdavBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for WebdavBuilder {
@@ -187,12 +171,6 @@ impl Builder for WebdavBuilder {
                         ..Default::default()
                     });
 
-                // allow deprecated api here for compatibility
-                #[allow(deprecated)]
-                if let Some(client) = self.http_client {
-                    am.update_http_client(|_| client);
-                }
-
                 am.into()
             },
             endpoint: endpoint.to_string(),
diff --git a/core/core/src/services/webdav/config.rs 
b/core/core/src/services/webdav/config.rs
index e9be3fbd3..527d57f9c 100644
--- a/core/core/src/services/webdav/config.rs
+++ b/core/core/src/services/webdav/config.rs
@@ -70,10 +70,7 @@ impl crate::Configurator for WebdavConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        WebdavBuilder {
-            config: self,
-            http_client: None,
-        }
+        WebdavBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/services/yandex_disk/backend.rs 
b/core/core/src/services/yandex_disk/backend.rs
index e117b3e3b..3fc5d342f 100644
--- a/core/core/src/services/yandex_disk/backend.rs
+++ b/core/core/src/services/yandex_disk/backend.rs
@@ -39,9 +39,6 @@ use crate::*;
 #[derive(Default)]
 pub struct YandexDiskBuilder {
     pub(super) config: YandexDiskConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for YandexDiskBuilder {
@@ -75,19 +72,6 @@ impl YandexDiskBuilder {
 
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for YandexDiskBuilder {
@@ -137,12 +121,6 @@ impl Builder for YandexDiskBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/core/src/services/yandex_disk/config.rs 
b/core/core/src/services/yandex_disk/config.rs
index b128d6272..2464c3374 100644
--- a/core/core/src/services/yandex_disk/config.rs
+++ b/core/core/src/services/yandex_disk/config.rs
@@ -60,10 +60,7 @@ impl crate::Configurator for YandexDiskConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        YandexDiskBuilder {
-            config: self,
-            http_client: None,
-        }
+        YandexDiskBuilder { config: self }
     }
 }
 
diff --git a/core/core/src/types/builder.rs b/core/core/src/types/builder.rs
index 2c0ec5e6c..df4933b3d 100644
--- a/core/core/src/types/builder.rs
+++ b/core/core/src/types/builder.rs
@@ -29,7 +29,7 @@ use crate::*;
 /// This trait allows the developer to define a builder struct that can:
 ///
 /// - build a service via builder style API.
-/// - configure in-memory options like `http_client` or 
`customized_credential_load`.
+/// - configure in-memory options like `customized_credential_load`.
 ///
 /// Usually, users don't need to use or import this trait directly, they can 
use `Operator` API instead.
 ///
diff --git a/core/core/src/types/operator/operator.rs 
b/core/core/src/types/operator/operator.rs
index d9cde1c67..15d6df711 100644
--- a/core/core/src/types/operator/operator.rs
+++ b/core/core/src/types/operator/operator.rs
@@ -201,55 +201,6 @@ impl Operator {
     pub fn update_executor(&self, f: impl FnOnce(Executor) -> Executor) {
         self.accessor.info().update_executor(f);
     }
-
-    /// Get the http client used by current operator.
-    #[deprecated(
-        since = "0.54.0",
-        note = "Use HttpClientLayer instead. This method will be removed in 
next version."
-    )]
-    pub fn http_client(&self) -> HttpClient {
-        self.accessor.info().http_client()
-    }
-
-    /// Update http client for the context.
-    ///
-    /// All cloned `Operator` instances share the same internal state, such as
-    /// `HttpClient` and `Runtime`. Some layers may modify the internal state 
of
-    /// the `Operator` too like inject logging and metrics for `HttpClient`.
-    ///
-    /// # Note
-    ///
-    /// Tasks must be forwarded to the old executor after the update. 
Otherwise, features such as retry, timeout, and metrics may not function 
properly.
-    ///
-    /// # Deprecated
-    ///
-    /// This method is deprecated since v0.54.0. Use [`HttpClientLayer`] 
instead.
-    ///
-    /// ## Migration Example
-    ///
-    /// Instead of:
-    /// ```ignore
-    /// let operator = Operator::new(service)?;
-    /// operator.update_http_client(|_| custom_client);
-    /// ```
-    ///
-    /// Use:
-    /// ```ignore
-    /// use opendal_core::layers::HttpClientLayer;
-    ///
-    /// let operator = Operator::new(service)?
-    ///     .layer(HttpClientLayer::new(custom_client))
-    ///     .finish();
-    /// ```
-    ///
-    /// [`HttpClientLayer`]: crate::layers::HttpClientLayer
-    #[deprecated(
-        since = "0.54.0",
-        note = "Use HttpClientLayer instead. This method will be removed in 
next version"
-    )]
-    pub fn update_http_client(&self, f: impl FnOnce(HttpClient) -> HttpClient) 
{
-        self.accessor.info().update_http_client(f);
-    }
 }
 
 /// # Operator async API.
diff --git a/core/services/azblob/src/backend.rs 
b/core/services/azblob/src/backend.rs
index b6e507ca3..9222b5276 100644
--- a/core/services/azblob/src/backend.rs
+++ b/core/services/azblob/src/backend.rs
@@ -63,9 +63,6 @@ impl From<AzureStorageConfig> for AzblobConfig {
 #[derive(Default)]
 pub struct AzblobBuilder {
     pub(super) config: AzblobConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for AzblobBuilder {
@@ -233,19 +230,6 @@ impl AzblobBuilder {
         self
     }
 
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
-
     /// Set maximum batch operations of this backend.
     pub fn batch_max_operations(mut self, batch_max_operations: usize) -> Self 
{
         self.config.batch_max_operations = Some(batch_max_operations);
@@ -429,12 +413,6 @@ impl Builder for AzblobBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/services/azblob/src/config.rs 
b/core/services/azblob/src/config.rs
index 4fcfbdf81..c1286bf8b 100644
--- a/core/services/azblob/src/config.rs
+++ b/core/services/azblob/src/config.rs
@@ -107,11 +107,7 @@ impl opendal_core::Configurator for AzblobConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        AzblobBuilder {
-            config: self,
-
-            http_client: None,
-        }
+        AzblobBuilder { config: self }
     }
 }
 
diff --git a/core/services/azdls/src/backend.rs 
b/core/services/azdls/src/backend.rs
index c6e52ce43..40b7072b2 100644
--- a/core/services/azdls/src/backend.rs
+++ b/core/services/azdls/src/backend.rs
@@ -61,9 +61,6 @@ impl From<AzureStorageConfig> for AzdlsConfig {
 #[derive(Default)]
 pub struct AzdlsBuilder {
     pub(super) config: AzdlsConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for AzdlsBuilder {
@@ -195,19 +192,6 @@ impl AzdlsBuilder {
         self
     }
 
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
-
     /// Create a new `AzdlsBuilder` instance from an [Azure Storage connection 
string][1].
     ///
     /// [1]: 
https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string
@@ -308,12 +292,6 @@ impl Builder for AzdlsBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 filesystem: self.config.filesystem.clone(),
diff --git a/core/services/azdls/src/config.rs 
b/core/services/azdls/src/config.rs
index 28efd83b6..f05c87705 100644
--- a/core/services/azdls/src/config.rs
+++ b/core/services/azdls/src/config.rs
@@ -119,10 +119,7 @@ impl opendal_core::Configurator for AzdlsConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        AzdlsBuilder {
-            config: self,
-            http_client: None,
-        }
+        AzdlsBuilder { config: self }
     }
 }
 
diff --git a/core/services/azfile/src/backend.rs 
b/core/services/azfile/src/backend.rs
index e995e66e7..cbb514b55 100644
--- a/core/services/azfile/src/backend.rs
+++ b/core/services/azfile/src/backend.rs
@@ -58,9 +58,6 @@ impl From<AzureStorageConfig> for AzfileConfig {
 #[derive(Default)]
 pub struct AzfileBuilder {
     pub(super) config: AzfileConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for AzfileBuilder {
@@ -131,19 +128,6 @@ impl AzfileBuilder {
         self
     }
 
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
-
     /// Create a new `AfileBuilder` instance from an [Azure Storage connection 
string][1].
     ///
     /// [1]: 
https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string
@@ -235,12 +219,6 @@ impl Builder for AzfileBuilder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = self.http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 root,
diff --git a/core/services/azfile/src/config.rs 
b/core/services/azfile/src/config.rs
index 572c375c9..29bcc1af1 100644
--- a/core/services/azfile/src/config.rs
+++ b/core/services/azfile/src/config.rs
@@ -99,10 +99,7 @@ impl opendal_core::Configurator for AzfileConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        AzfileBuilder {
-            config: self,
-            http_client: None,
-        }
+        AzfileBuilder { config: self }
     }
 }
 
diff --git a/core/services/ghac/src/backend.rs 
b/core/services/ghac/src/backend.rs
index 7063dc601..e2620999e 100644
--- a/core/services/ghac/src/backend.rs
+++ b/core/services/ghac/src/backend.rs
@@ -55,9 +55,6 @@ fn value_or_env(
 #[derive(Default)]
 pub struct GhacBuilder {
     pub(super) config: GhacConfig,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
 }
 
 impl Debug for GhacBuilder {
@@ -118,19 +115,6 @@ impl GhacBuilder {
         }
         self
     }
-
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
 }
 
 impl Builder for GhacBuilder {
@@ -187,12 +171,6 @@ impl Builder for GhacBuilder {
                         ..Default::default()
                     });
 
-                // allow deprecated api here for compatibility
-                #[allow(deprecated)]
-                if let Some(client) = self.http_client {
-                    am.update_http_client(|_| client);
-                }
-
                 am.into()
             },
             root,
diff --git a/core/services/ghac/src/config.rs b/core/services/ghac/src/config.rs
index 4acda69ac..1c53b3fa0 100644
--- a/core/services/ghac/src/config.rs
+++ b/core/services/ghac/src/config.rs
@@ -79,10 +79,7 @@ impl opendal_core::Configurator for GhacConfig {
 
     #[allow(deprecated)]
     fn into_builder(self) -> Self::Builder {
-        GhacBuilder {
-            config: self,
-            http_client: None,
-        }
+        GhacBuilder { config: self }
     }
 }
 
diff --git a/core/services/s3/src/backend.rs b/core/services/s3/src/backend.rs
index dc3f0295d..99456d94d 100644
--- a/core/services/s3/src/backend.rs
+++ b/core/services/s3/src/backend.rs
@@ -81,9 +81,6 @@ const DEFAULT_BATCH_MAX_OPERATIONS: usize = 1000;
 #[derive(Default)]
 pub struct S3Builder {
     pub(super) config: S3Config,
-
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    pub(super) http_client: Option<HttpClient>,
     pub(super) credential_providers: 
Option<ProvideCredentialChain<Credential>>,
 }
 
@@ -449,19 +446,6 @@ impl S3Builder {
         self
     }
 
-    /// Specify the http client that used by this service.
-    ///
-    /// # Notes
-    ///
-    /// This API is part of OpenDAL's Raw API. `HttpClient` could be changed
-    /// during minor updates.
-    #[deprecated(since = "0.53.0", note = "Use `Operator::update_http_client` 
instead")]
-    #[allow(deprecated)]
-    pub fn http_client(mut self, client: HttpClient) -> Self {
-        self.http_client = Some(client);
-        self
-    }
-
     /// Set bucket versioning status for this backend
     pub fn enable_versioning(mut self, enabled: bool) -> Self {
         self.config.enable_versioning = enabled;
@@ -706,10 +690,8 @@ impl Builder for S3Builder {
     fn build(self) -> Result<impl Access> {
         debug!("backend build started: {:?}", &self);
 
-        #[allow(deprecated)]
         let S3Builder {
             mut config,
-            http_client,
             credential_providers,
         } = self;
 
@@ -962,12 +944,6 @@ impl Builder for S3Builder {
                             ..Default::default()
                         });
 
-                    // allow deprecated api here for compatibility
-                    #[allow(deprecated)]
-                    if let Some(client) = http_client {
-                        am.update_http_client(|_| client);
-                    }
-
                     am.into()
                 },
                 bucket: bucket.to_string(),
diff --git a/core/services/s3/src/config.rs b/core/services/s3/src/config.rs
index 9b2761e01..8e4a3c15d 100644
--- a/core/services/s3/src/config.rs
+++ b/core/services/s3/src/config.rs
@@ -255,7 +255,6 @@ impl Configurator for S3Config {
     fn into_builder(self) -> Self::Builder {
         S3Builder {
             config: self,
-            http_client: None,
             credential_providers: None,
         }
     }

Reply via email to